正则表达式捕获的不仅仅是预期的

时间:2015-06-02 17:40:45

标签: regex python-2.7

我已经编写了这个简单的正则表达式来捕获“WKN”之后的六个字符,但我必须做错了,因为它也会返回“WKN”。

search_reply = "WKN A12BHF, IS3R"

wkn = re.search("WKN\s(.{6})", search_reply.text)

>>> "WKN A12BHF"

对于此示例,我只想保留"A12BHF"

4 个答案:

答案 0 :(得分:2)

wkn = re.search("WKN\s(.{6})", search_reply.text).group(1)

应该这样做。你的正则表达式是正确的。你想要的是group ()

答案 1 :(得分:2)

import re

search_reply = "WKN A12BHF, IS3R"

wkn = re.search("(WKN\s)(.{6})", search_reply)

print(wkn.group(2))

试试这个

答案 2 :(得分:1)

你可以在这里使用积极的观察:

>>> re.search(r"(?<=WKN\s).{6}", search_reply).group()
'A12BHF'

(?<=WKN\s)断言6位数文字前面有WKN和空格。

答案 3 :(得分:1)

用于查找 WKN 的常见正则表达式,开头也没有“WKN”:

re.search("(?<!\S)[A-Z0-9]{6}(?!\S)", text)