分配给命名组的Python正则表达式

时间:2010-04-26 00:14:20

标签: 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'

注意:标题可能不易理解。那是因为我不知道怎么说。对不起,如果我引起任何混淆。

2 个答案:

答案 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 ,同时允许整体匹配。)