[英]How to search all the alphanumeric sequences in a document using Regex in Python?
我在Regex中遇到了问题,我需要搜索文档中所有可用的字母数字序列。 一个文档可以有多个这样的序列。 我正在用Python做。
因此,例如,如果该文档是“ ID为X12354,ID为1234Z和ID 12P555的某些东西等等,都已经50岁了”。
因此,预期输出应为:
X12354
1234Z
12P555
摘要 : 字符串和字母和数字都必须出现在顺序或长度无关紧要的字符串中。 该字符串可以在文档中多次出现。 它可以在任何地方。
我尝试了几种方法来解决正则表达式,但每次都变得混乱。 提前致谢。
您可以在单词边界之间进行匹配,并使用正向先行来断言大写字符和一个数字:
\\b(?=[AZ-0-9]*[AZ])(?=[AZ-0-9]*[0-9])[A-Z0-9]+\\b
那将匹配:
\\b
字边界 (?=
肯定右边的正向前进
[A-Z0-9]
*匹配零个或多个大写字符 [AZ]
匹配大写字符 )
正面正向 (?=
肯定右边的正向前进
[A-Z0-9]*
匹配零个或多个大写字符 [0-9]
匹配一个数字 )
正面正向 [A-Z0-9]+
一次或多次匹配大写字符或数字 \\b
字边界 因此,在Python中,这将是:
import re
s = "some blah blah blah with id X12354, id 1234Z and id 12P555. All are 50 years old."
re.findall(r'\b(?=[A-Z-0-9]*[A-Z])(?=[A-Z-0-9]*[0-9])[A-Z0-9]+\b', s)
给予:
['X12354', '1234Z', '12P555']
这将检测在每个小的字符串中是否至少存在字母和数字。
import re
from string import punctuation
s = "some blah blah blah with id X12354, id 1234Z and id 12P555. All are 50 years old."
ans = [v for v in re.split("[ " + punctuation + "]", s)
if any(c.isdigit() for c in v) and any(c.isalpha() for c in v)]
['X12354,', '1234Z', '12P555']
re.split("[ " + punctuation + "]", s)
拆分所有标点符号和空格。
使用re.findall
获取所有匹配项。 使用两次先行,一次用于验证匹配项是否包含数字,另一次用于验证其是否包含字母。
document = "some blah blah blah with id X12354, id 1234Z and id 12P555. All are 50 years old."
matches = re.findall('(?=[a-z0-9]*[a-z])(?=[a-z0-9]*[0-9])[a-z0-9]+', document, re.IGNORECASE)
print(matches)
您可以在此处在线尝试正则表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.