当你在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'
注意:标题可能不易理解。那是因为我不知道怎么说。对不起,如果我引起任何混淆。
答案 0 :(得分:12)
为此,你需要一个正则表达式
"say (?P<value>.+) endsay"
句点与任何字符匹配,加号表示应重复一次或多次...所以.+
表示一个或多个字符的任何序列。当您将endsay
放在最后时,正则表达式引擎将确保它匹配的任何内容实际上都以该字符串结尾。
答案 1 :(得分:10)
如果文本是
,则需要指定要匹配的内容say hello there and endsay but some more endsay
如果你想匹配整个hello there and endsay but some more
子字符串,@ David的回答是正确的。否则,要仅匹配hello there and
,模式必须是:
say (?P<value>.+?) endsay
在加号后加上问号使其非贪婪(默认情况下,它是贪婪,在允许整体匹配的同时吞噬所有可能; < em> non-greedy 意味着它会尽可能地吞噬 little ,同时允许整体匹配。)