新手区 求借一个关于 python 上正则表达式的问题

imit3 · 2019年12月19日 · 最后由 hellohell 回复于 2019年12月19日 · 1785 次阅读

比如一个正则表达式"((a) b)\1",我这里的\1 匹配的是"a(b)"这个整体,如果我想在正则里只想匹配 “a”,该怎么写?

--------------------------------------------------更新描述-------------------------------------------------

问题是获取一个字符串中相同字符及连续出现次数,例如"122333444422” 中获取结果就是 “1 个 1,2 个 2,3 个 3,4 个 4,2 个 2”。

如果这样子

str1 = "122333444422"
print(re.findall(r"(\d)\1*",str1))

就只能获取到 ['1', '2', '3', '4', '2'] 这个结果,我还想知道连续出现的次数

共收到 8 条回复 时间 点赞

你原文是啥?

是问的向前引用?不是数左括号就行了哇

如果是想匹配括号中的字母的话可以这么写 r'([a-zA-Z]{0,1})'

用正则没想出来,用 for 循环做出来了!



用 collections 库就完事了

回复

又学到了一招,嘿嘿

import re
def func(m):
    n=m.string[m.start():m.end()]
    return (f'{n[0]}:{len(n)} | ')

print(re.sub(r'(\d)\1*', func, '122333444422'))

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册