我正在尝试编写一个正则表达式来提取我的元标记和&符号之间的所有文本;
对于下面的示例,我想提取键'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
答案 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;] *匹配零个或多个不是符号的字符。