[英]what is wrong with this simple regex?
我陷入了垃圾堆:
import re
print re.search('return[^$]+',
'return to the Treasury of $40 million\nnow!').group(0)
上面的正则表达式只能return to the Treasury of
,但我希望其中包括$40 million
。 我从regex了解到的是,我要它take every thing until the end of the line
。
我不想使用.*
,我希望endline delimiter
从某点开始直到行尾。 如果我从搜索字符串中删除$,则会打印完整字符串。 为什么终端定界符与美元符号匹配?
return[^$]+
将匹配字符串“ return”,后跟一个或多次不是“ $”的字符。
这是因为[]表示字符组,而[]内的特殊字符被作为简单字符穿线。
因此,它仅匹配到美元符号。
为什么不使用:
return.+$
这正是您想要的。
您为什么不想使用.*
?
您拥有的正则表达式将匹配任何以“ return”开头的字符串,然后匹配一个或多个不是“ $”字符的字符。 请注意,这不会寻找行尾标记。
return.*$
将匹配所有内容,包括行尾标记。 如果要处理多行输入,则可能(但可能不需要)使.*
成为惰性匹配器。
import re
text = 'we will return to the Treasury of $40 million\nunits of money.'
re.search(r'return.*$', text, re.MULTILINE).group(0)
# prints 'we will return to the Treasury of $40 million'
您需要包括多行标志,然后$将在换行符处匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.