Skip to main content
 首页 » 编程设计

Python 正则表达式前瞻

2024年10月01日34soundcode

尝试创建一个正则表达式来查找一些字母组​​合后跟数字。 像 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。