Python正则表达式在遇到"&"时停止
我正在尝试写一个正则表达式,用来提取我在meta标签和&符号之间的所有文本。
在下面的例子中,我想提取键' 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 个回答
2
问题是 \w
这个表达式不能匹配到连字符(-
),所以你需要把它放进一个字符类里。
my_text = re.search(r'(?<=My\.Tag=)[\w-]+', line)
另一种选择是使用一个否定的 [^ ]
字符类,这意味着可以匹配任何字符,除了:&
。
my_text = re.search(r'(?<=My\.Tag=)[^&]+', line)
注意:使用 r
是Python中表示原始字符串的方式,这样可以避免转义字符的问题。
1
你可以使用一种正则表达式,它可以匹配任何除了“&”符号的内容:
$ my_text = re.search('(?<=My\.Tag=)[^&?]*', line)
这个正则表达式 [^&]* 可以匹配零个或多个不是“&”符号的字符。