我被困在垃圾堆里:
import re
print re.search('return[^$]+',
'return to the Treasury of $40 million\nnow!').group(0)
上面的regex只打印return to the Treasury of
,但我希望它包含$40 million
。我对regex的理解是我要求它take every thing until the end of the line
。在
我不想使用.*
,我希望endline delimiter
从某个点一直到行尾。如果我从搜索字符串中删除$,它将打印完整的字符串。为什么结束线分隔符与美元符号匹配??在
为什么不使用
.*
?在您拥有的正则表达式将匹配以“return”开头的任何字符串,然后匹配一个或多个非“$”字符的字符。请注意,这不会查找行尾标记。在
return.*$
将匹配行尾标记之前的所有内容(包括行尾标记)。如果要处理多行输入,则可能需要(但可能不需要)使.*
成为延迟匹配器。在将匹配一个字符串“return”,后跟非“$”的任何字符一次或多次。在
这是因为[]表示字符组,[]内部的特殊字符是作为简单字符进行线程化的。在
因此,直到美元与符号匹配为止。在
为什么不使用:
^{pr2}$这正是你想要的。在
您需要包含多行标志,然后$将在换行符处匹配。在
相关问题 更多 >
编程相关推荐