Non*_*one 11 python regex variables variable-assignment
当你在python正则表达式中使用变量(是正确的单词吗?)时:"blah(?P\w +)"("value"将是变量),你怎么能让变量的值成为"之后的文本" blah"到行尾或某个字符没有注意变量的实际内容.例如,这是我想要的伪代码:
>>> import re
>>> p = re.compile("say (?P<value>continue_until_text_after_assignment_is_recognized) endsay")
>>> m = p.match("say Hello hi yo endsay")
>>> m.group('value')
'Hello hi yo'
Run Code Online (Sandbox Code Playgroud)
注意:标题可能不易理解.那是因为我不知道怎么说.对不起,如果我引起任何混淆.
Dav*_*d Z 12
为此,你需要一个正则表达式
"say (?P<value>.+) endsay"
Run Code Online (Sandbox Code Playgroud)
句点匹配任何字符,加号表示应重复一次或多次...所以.+表示一个或多个字符的任何序列.当你放在endsay最后,正则表达式引擎将确保它匹配的任何东西实际上以该字符串结束.
Ale*_*lli 10
例如,如果文本是,则需要指定要匹配的内容
say hello there and endsay but some more endsay
Run Code Online (Sandbox Code Playgroud)
如果你想匹配整个hello there and endsay but some more子字符串,@ David的回答是正确的.否则,为了匹配hello there and,模式需要是:
say (?P<value>.+?) endsay
Run Code Online (Sandbox Code Playgroud)
在加号后加一个问号使其变得非贪婪(默认情况下它是贪婪的,在允许整体匹配的同时吞噬所有可能; 非贪婪意味着它尽可能少地吞噬,同时允许整体匹配) .