在字符串中的单词后面查找长度为11的增值税编号



我有以下文本a="增值税号码12345678901手机号码34567890234";我只想找到由11个数字(即12345678901(组成的增值税号码对应的号码,而不想找到34567890234。

我使用的正则表达式是:

rgx = "(?<!d)d{11}(?!d)"

但CCD_ 1同时给了我CCD_ 2和CCD_。知道吗?

在精确字符串a="VAT number 12345678901 mobile number 34567890234"中,这将查找11位数字,后面跟着一个空格和单词mobile,但只返回这些数字。rgx = "d{11}(?=smobile)"

有很多浏览器驱动的正则表达式创建者,他们是很好的学习资源。

您的原始表达式使用否定环视表达式(?<d)(?!d),它们并非在所有方面都受支持,因此我倾向于避免使用它们。此外,就语言结构而言,检测事物的存在通常比检测事物的不存在更准确。就像有人问你想喝什么,你回答";不是毒药";但是你想要一杯苏打水;你不太可能喝到苏打水。

因此,正向环视表达式将更健壮的(?=abc)re.findall(rg, a)0

试试这个

(?:VATs*numbers*)(d{11})s+

此未捕获块:(?:VATs*numbers*)确保搜索后的号码。

此块:(d{11})s+仅当增值税编号由11位数字组成时,才捕获该编号。

最新更新