regex 如何在python中从正则表达式匹配中排除换行符?

2j4z5cfb  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(125)

我如何使下面的正则表达式排除跨行的匹配?

import re
reg = re.compile(r'\b(apple)(?:\W+\w+){0,4}?\W+(tree|plant|garden)')
reg.findall('my\napple tree in the garden')
reg.findall('apple\ntree in the garden')

第一个应该匹配,第二个不应该。
(Now两个匹配……)

gkn4icbw

gkn4icbw1#

您的\W匹配换行符。要排除它们,请将\W替换为[^\w\n]

import re
reg = re.compile(r'\b(apple)(?:[^\n\w]+\w+){0,4}?[^\n\w]+(tree|plant|garden)')
print(reg.findall('my\napple tree in the garden'))
#  [('apple', 'tree')]
print(reg.findall('apple\ntree in the garden'))
#  []

相关问题