Python正则表达式要点和多行匹配
想要匹配两个单词或短语之间的内容,其中有一个要点,在python中有多行,并且适用于单词开头和结尾之间的每个变体。不知道用于项目符号的标识符,也不知道用于匹配所有内容(包括换行符)的标识符。例如,尝试匹配:Python正则表达式要点和多行匹配,python,regex,Python,Regex,想要匹配两个单词或短语之间的内容,其中有一个要点,在python中有多行,并且适用于单词开头和结尾之间的每个变体。不知道用于项目符号的标识符,也不知道用于匹配所有内容(包括换行符)的标识符。例如,尝试匹配: Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World 在 其中该字符串位于多行之上。我知道它可能不在球场上,但这是我到目前为止所拥有的,显然它不起作用 Answer = re
Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World
在
其中该字符串位于多行之上。我知道它可能不在球场上,但这是我到目前为止所拥有的,显然它不起作用
Answer = re.findall("(?<=qweqrqr)(.*\n?)/s(?=fdsfdas)"), hello_big_old_world)
print(Answer)
Answer=re.findall((?要匹配包括换行符在内的所有字符,您仍然使用
字符,但将flags=re.dotal
传递给函数,例如re.findall
您可以使用
hello_big_old_world = "qweqrqr Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas"
print(re.findall(r'qweqrqr([^\u2022]*\u2022.*?)fdsfdas', hello_big_old_world, re.S))
看
请注意,如果在括号组的两端添加\s*
(=0+空格字符),则可以使用•
而不是Unicode字符表示法,还可以从捕获的文本中删除空格:
re.findall(r'qweqrqr\s*([^•]*•.*?)\s*fdsfdas', hello_big_old_world, re.S)
它应该与Python 2兼容
详细信息
qweqrqr
-匹配右分隔符
([^\u2022]*\u2022.*?
/([^•]*•.*?)
-捕获到组1中(返回的字符串带有re.findall
)
[^\u2022]*
/[^•]*
-除项目符号以外的任何字符
\u2022
/•
-要点
*?
-任何0+字符(包括由于re.S
(=re.DOTALL
)标志而产生的换行符)尽可能少(由于惰性量词*?
)
fdsfdas
-匹配左侧分隔符
您可以使用您的regex
,只需稍作更改:
/s
应该是\s
- 使用
re.DOTALL
匹配中间有换行符的情况
工作代码:
import re
hello_big_old_world = 'qweqrqr Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas'
Answer = re.findall("(?<=qweqrqr)(.*\n?)\s(?=fdsfdas)", hello_big_old_world, re.DOTALL)
print(Answer)
# [' Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World']
重新导入
hello\u big\u old\u world='QWEQRQRQR hello•world hello•world hello•world hello•world hello•world hello•world hello•world fdsfdas'
Answer=re.findall(“(?Tryre.findall(r'qweqrqr([^\u2022]*\u2022.*?)fdsfdas,”,hello_big_old_world,re.S)
import re
hello_big_old_world = 'qweqrqr Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World fdsfdas'
Answer = re.findall("(?<=qweqrqr)(.*\n?)\s(?=fdsfdas)", hello_big_old_world, re.DOTALL)
print(Answer)
# [' Hello • World Hello • World Hello • World Hello • World Hello • World Hello • World']