Python正则表达式在看到&符号时停止

时间:2014-06-11 14:45:22

标签: python regex string parsing

我正在尝试编写一个正则表达式来提取我的元标记和&符号之间的所有文本;

对于下面的示例,我想提取键'My.Tag'的值,这将是'This-iswhatIwanttopull'。问题是我不知道如何让它在&符号之前拉出所有东西。

$ import re
$ line = 'sometextsometext&My.Tag=This-iswhatIwanttopull&sometextsometext'
$ my_text = re.search('(?<=My\.Tag=)\w+',line)
$ print my_text.group()
$ This

2 个答案:

答案 0 :(得分:2)

问题是\w与连字符(-)不匹配,因此您需要将其包含在character class内。

my_text = re.search(r'(?<=My\.Tag=)[\w-]+', line)

另一个选项,使用否定的[^ ]字符类,表示除&之外的任何字符

my_text = re.search(r'(?<=My\.Tag=)[^&]+', line)

注意:使用r是Python的正则表达式模式的原始字符串表示法,并避免转义。

答案 1 :(得分:1)

你可以使用匹配任何的正则表达式,除了&符号:

$ my_text = re.search('(?<=My\.Tag=)[^&?]*', line)

正则表达式[^&amp;] *匹配零个或多个不是符号的字符。