Python 为什么可以';我不能拿出一些ID';使用正则表达式的一些字符串是什么?
我试图从一些字符串中找出一些Python 为什么可以';我不能拿出一些ID';使用正则表达式的一些字符串是什么?,python,regex,python-3.x,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):
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)
它产生的产出:
HTRY098WE
KNGT371WE?witkl
ZXV555NQE?phnu
预期产出:
HTRY098WE
KNGT371WE
ZXV555NQE
如何从一些字符串中提取
ID
。您可以使用带有否定字符类的捕获组来匹配问号或空白字符
使用*
首次尝试的模式将一直匹配到字符串末尾。然后在字符串的末尾,它尝试匹配一个可选的问号\??
。这将成功(因为它是可选的),从而匹配前3个示例的整个字符串
id-([^?\s]+)
|
比如说
import re
content = """
id-HTRY098WE
id-KNGT371WE?witkl
id-ZXV555NQE?phnu
eh-VCBG075LK
"""
for item in re.findall(r'id-([^?\s]+)',content):
print(item)
结果
HTRY098WE
KNGT371WE
ZXV555NQE
或仅匹配字母数字:
id-([A-Z0-9]+)
或可能使捕获组不贪婪,直到
?
或字符串结束,例如:r'id-(.*?[?\n]”
-那么您就不必担心id部分中可能包含的内容的标准…@JonClements,这确实有效,但前提是所有值都以换行符或问号结尾。