rob*_*txt 5 python regex python-3.x
我正在尝试ID从某些字符串中找出一些。我想从每个字符串中抓取的部分在bd-和之间?。后者并不总是存在的,所以我想做出这个信号吗?可选的。我知道我可以使用字符串操作来实现相同的目的,但是我希望使用正则表达式来实现相同的目的。
我尝试过:
import re
content = """
id-HTRY098WE
id-KNGT371WE?witkl
id-ZXV555NQE?phnu
eh-VCBG075LK
"""
for item in re.findall(r'id-(.*)\??',content):
print(item)
Run Code Online (Sandbox Code Playgroud)
输出它产生:
HTRY098WE
KNGT371WE?witkl
ZXV555NQE?phnu
Run Code Online (Sandbox Code Playgroud)
预期产量:
HTRY098WE
KNGT371WE
ZXV555NQE
Run Code Online (Sandbox Code Playgroud)
如何ID从某些字符串中刮掉?
您可以使用带有否定字符类的捕获组来匹配问号或空格字符。
您首先尝试使用的模式会使用匹配到字符串的结尾.*。然后,在字符串的末尾,它尝试匹配可选的问号\??。这将成功(因为它是可选的),从而使前三个示例匹配整个字符串。
id-([^?\s]+)
Run Code Online (Sandbox Code Playgroud)
例如
import re
content = """
id-HTRY098WE
id-KNGT371WE?witkl
id-ZXV555NQE?phnu
eh-VCBG075LK
"""
for item in re.findall(r'id-([^?\s]+)',content):
print(item)
Run Code Online (Sandbox Code Playgroud)
结果
HTRY098WE
KNGT371WE
ZXV555NQE
Run Code Online (Sandbox Code Playgroud)
或仅匹配字母数字:
id-([A-Z0-9]+)
Run Code Online (Sandbox Code Playgroud)