我尝试用
匹配两行^(.*\|.*)$^.*$
它不起作用。你怎么配对 几行?
注意:我不是用Python编程,而是在我的编辑器gedit中使用Python风格的Regex。
谢谢和问候!
答案 0 :(得分:6)
正如其他答案所说,你正在寻找re.MULTILINE
,但即便如此,你的正则表达式也行不通。
$
匹配换行符之前的位置,^
匹配行的开头,因此正则表达式中间的$^
永远不会比赛。例如:
>>> re.search("^(.*)$^.*$", multiline_string, re.M) # won't match
>>> re.search("^(.*)$\n^.*$", multiline_string, re.M) # will match
<_sre.SRE_Match object at 0xb7f3e5e0>
您需要一些内容来匹配$
和^
之间的行尾字符。
答案 1 :(得分:2)
看看re.MULTILINE
。
我引用:
指定时,模式字符
'^'
匹配在开头 字符串和每个开头 线(紧随其后) 新队);和模式字符'$'
匹配字符串的末尾 并在每一行的末尾 (紧接在每个换行符之前)。默认情况下,
'^'
仅匹配 字符串的开头,仅'$'
在字符串的末尾和 紧接在换行符之前(如果 任何)在字符串的末尾。
答案 2 :(得分:2)
你必须使用re.MULTILINE(如果你改变正则表达式,你可以使用re.DOTALL,具体取决于你想要匹配/做什么)
re.MULTILINE
指定时,模式字符 '^'在开头匹配 字符串和开头的 每一行(紧随其后) 新队);和模式字符 '$'匹配字符串的末尾 并在每一行的末尾 (紧接在每个换行符之前)。
默认情况下,'^'仅匹配 字符串的开头,只有'$' 在字符串的末尾和 紧接在换行符之前(如果 任何)在字符串的末尾。
http://docs.python.org/library/re.html
顺便说一句,你在做什么 -^(.*\|.*)$^.*$
- 这不是一个非常好的正则表达式! (忽略了你有多个$
和^
这个问题的事实。)
答案 3 :(得分:2)
添加其他答案。您可以将re.MULTILINE修饰符直接放入正则表达式:
(?m)^(.*\|.*)$\n^.*$
答案 4 :(得分:1)
我会参考python正则表达式手册http://docs.python.org/library/re.html#re.MULTILINE
答案 5 :(得分:1)
使用(?m)对正则表达式进行前缀应该能够满足要求(告诉正则表达式引擎它将接收多行文本,并且^ / $匹配行的开头/结尾而不是整个文本)。 / p>
编辑:在看了你的正则表达式之后,我认为你还需要放(?s),这意味着你想要点匹配换行符。例如:
(?m)(?s)^hello.*?world$
在这样的情况下,正确匹配“helloworld”:
dssdf
hello
world
sdfasdf