python中字符串的Grep多字

python中字符串的Grep多字,python,string,Python,String,字符串格式和预期结果 我尝试了以下代码。结果是 另一个 你似乎对.、*和?的含义感到困惑 。是与单个字符匹配的元字符,例如,或。或者{,或者有时-但通常不-换行 *是一个元字符,它将上一个正则表达式重复零次或多次。例如,.*匹配空字符串或所有内容,可能不匹配换行符 ?因为一个单独的元字符会将上一个正则表达式重复零次或一次。例如,.?不匹配任何字符或一个字符,也可能不匹配换行符 也有组合;例如,*?表示重复0次或更多次,但希望尽可能少地重复非贪婪或吝啬匹配 圆括号用于分组;如果要使用.group,

字符串格式和预期结果

我尝试了以下代码。结果是

另一个


你似乎对.、*和?的含义感到困惑

。是与单个字符匹配的元字符,例如,或。或者{,或者有时-但通常不-换行

*是一个元字符,它将上一个正则表达式重复零次或多次。例如,.*匹配空字符串或所有内容,可能不匹配换行符

?因为一个单独的元字符会将上一个正则表达式重复零次或一次。例如,.?不匹配任何字符或一个字符,也可能不匹配换行符

也有组合;例如,*?表示重复0次或更多次,但希望尽可能少地重复非贪婪或吝啬匹配

圆括号用于分组;如果要使用.group,可能应该在要提取的匹配项周围使用括号

别挡道了,试试看

re.findall(r'(\{[^{}]*\})', a)
其中[^{}]匹配一个不是大括号的单个字符,反斜杠转义大括号,而大括号在其他情况下也是用于指定特定重复次数的正则表达式元字符,例如,.{3}匹配三个任意字符,\?{5}匹配五个或更多文字问号

如果要循环匹配项,可能更喜欢生成器re.finditer而不是re.findall


要查找并检查[0]或[-1]中单词前和单词后的空格

print*re.findallr'\{.*?\}',a,sep='\n''
>>>re.search(r'{.*.}',a).group()
>>>{a.b.c} fdferef {c.d.f}dfefe dfefffe + fdfef {}'
>>>re.search(r'{.?*.}',a).group()
>>>Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   File "/usr/lib/python2.7/re.py", line 146, in search
     return _compile(pattern, flags).search(string)
   File "/usr/lib/python2.7/re.py", line 251, in _compile
     raise error, v # invalid expression
   sre_constants.error: multiple repeat
re.findall(r'(\{[^{}]*\})', a)
a = ' 45 54 '
True
b = ' 45'
True
c = '45 '
True 
d = '45'
False
e = 'er 44 434'
False