Python 使用正则表达式查找逗号字符串中的所有字符

Python 使用正则表达式查找逗号字符串中的所有字符,python,regex,rubular,Python,Regex,Rubular,我要搜索以下字符串中的所有“2”: 2, 10,11,1,1, 22,1,12,1,1, 1,2 , 2 ,2 我给出了正则表达式: (^\s*(2)\s*)|(\s*,\s*(2)\s*(,|$)) 但它不会搜索,只会搜索一个2 我现在将正则表达式更改为 (^\s*(2)\s*)|(\s*,\s*(2)\s*) 但现在需要22个2中的一个 如何更改正则表达式,以便找到所有2(22或12个不应被考虑)?希望这就是您所寻找的 [^\d]2[^\d] python代码必须类似于

我要搜索以下字符串中的所有“2”:

2, 10,11,1,1, 22,1,12,1,1, 1,2 , 2  ,2

我给出了正则表达式:

(^\s*(2)\s*)|(\s*,\s*(2)\s*(,|$))
但它不会搜索,只会搜索一个2


我现在将正则表达式更改为

(^\s*(2)\s*)|(\s*,\s*(2)\s*)
但现在需要22个2中的一个



如何更改正则表达式,以便找到所有2(22或12个不应被考虑)?

希望这就是您所寻找的

 [^\d]2[^\d]

python代码必须类似于

p = re.compile(ur'[^\d]2[^\d]', re.MULTILINE)

使用负向后看和负向前看

(?<!\d)2(?!\d)
(?

>>重新导入
>>>s=“2,10,11,1,1,22,1,12,1,1,1,1,2,2”

>>>关于findall(r’(?这将匹配输入字符串中的所有独立
2

(?<!\d)2(?!\d)
请注意,上面的(两个)regex并不关心输入的格式。它只是简单地提取任何独立的2,即使在:

2 plain text, 2,43_2,lkjsf
^             ^    ^

如果要将列与值
2
匹配,并忽略
2 2
abc 2
中的
2

(?:^|,) *(2) *(?=,|$)
它将仅与本示例文本中的
2
匹配:

2 plain text, 2 ,2, 43_2, 2 2,2   ,234,2
              ^  ^            ^        ^

这无法在字符串的开头或结尾捕获
2
。如果I“2,2,2”在同一个正则表达式中,如何忽略中间有空格的2expression@SHRI:您的新要求将使此处的所有答案无效,因此它属于一个新问题。未详细说明所有细节是您的错。我没有详细说明,因为这是一个“很高兴拥有”的要求。这就是为什么我仍然接受您的答案。请提供这没那么复杂,谢谢你
(?:^|,) *(2) *(?=,|$)
2 plain text, 2 ,2, 43_2, 2 2,2   ,234,2
              ^  ^            ^        ^