尝试创建一个正则表达式来查找一些字母组合后跟数字。 像 ABC123,但它可能是 ABC 123,ABCID:123
reg = re.compile('(ABC(?:ID\:| )?\d*?)(?:$| |,|\t)',re.IGNORECASE)
这行得通,但是它自己也能找到 ABC..
有没有办法只有后面跟着数字才能找到它?
提前致谢
请您参考如下方法:
您将 *? 量词与 \d 一起使用,它匹配 0 或更多数字(尽可能少)。
你可以使用
r'ABC(?:ID:| )?\d+'
或
r'[a-z]+(?:ID:| )?\d+'
参见 regex demo
详细信息:
ABC-ABC子字符串(或[a-z]+以匹配 1 个或多个 ASCII 字母(注意编译模式时使用re.I标志将使[a-z]也能匹配大写 ASCII 字母))(?:ID:| )?-ID:或空格出现 1 次或 0 次\d+- 1+ 位(+是一个贪心量词,所以不需要用(?: $| |,|\t)组)。
请注意,如果您打算在 Python 2.x 中也匹配 Unicode 字母,则需要使用
re.findall(r'[^\W\d_]+(?:ID:| )?[0-9]+', s, flags=re.U|re.I)
re.U 标志将使 \W 和 \d 类识别 Unicode。
