我想使用re.MULTILINE但不是 re.DOTALL,因此我可以使用包含"任何字符"通配符和.与换行符不匹配的普通通配符的正则表达式.
有没有办法做到这一点?我应该使用什么来匹配那些我想要包含换行符的实例中的任何字符?
Wik*_*żew 61
要匹配换行符或没有re.S/的"任何符号" re.DOTALL,您可以使用以下任何一项:
[\s\S]
[\w\W]
[\d\D]
Run Code Online (Sandbox Code Playgroud)
主要思想是字符类中相反的简写类匹配输入字符串中的任何符号.
通过(.|\s)交替比较它和其他变化,字符类解决方案更有效,因为它涉及更少的回溯(当与量词*或+量词一起使用时).比较一个小例子:(?:.|\n)+完成需要45个步骤,而且只需要[\s\S]+2个步骤.
Ali*_*jad 11
正则表达式:(注意空格 ' ' 的使用也在那里)
[\S\n\t\v ]
Run Code Online (Sandbox Code Playgroud)
import re
text = 'abc def ###A quick brown fox.\nIt jumps over the lazy dog### ghi jkl'
# We want to extract "A quick brown fox.\nIt jumps over the lazy dog"
matches = re.findall('###[\S\n ]+###', text)
print(matches[0])
Run Code Online (Sandbox Code Playgroud)
'matches[0]' 将包含:
'一只敏捷的棕色狐狸。\n它跳过了那只懒狗'
\S
匹配任何不是空白字符的字符。
(参见:https ://docs.python.org/3/library/re.html#regular-expression-syntax )
| 归档时间: |
|
| 查看次数: |
30795 次 |
| 最近记录: |