我试图使用re来匹配以'\n‘开头的模式,后面跟着可能的’r8‘,然后是零或更多的空格,然后是'function',然后我想在匹配发生的地方拆分字符串。所以对于这条绳子,
text = '''functional \n function disdat \nkitkat function wakawak\nreal(r8) function noooooo \ndoit'''我想:
['functional ',
' disdat \nkitkat function wakawak',
' noooooo \ndoit']然而,
regex = re.compile(r'''\n(real\(r8\))?\s*\bfunction\b''')
regex.split(text)返回
['functional ',
None,
' disdat \nkitkat function wakawak',
'real(r8)',
' noooooo \ndoit']split也会返回匹配的组。我怎么才能不让它发生呢?
发布于 2015-03-26 05:07:42
您可以使用非捕获组,如下所示
>>> regex = re.compile(r'\n(?:real\(r8\))?\s*\bfunction\b')
>>> regex.split(text)
['functional ', ' disdat \nkitkat function wakawak', ' noooooo \ndoit']注意?:中的(?:real\(r8\))。引用(?:..)
普通括号的非捕获版本。匹配括号内的任何正则表达式,但组匹配的子字符串在执行匹配后或稍后在模式中引用都无法检索。
https://stackoverflow.com/questions/29271447
复制相似问题