首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中的单词后面查找长度为11的增值税编号

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

Stack Overflow用户
提问于 2021-12-01 15:15:22
回答 2查看 45关注 0票数 0

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

我使用的正则表达式是:

代码语言:javascript
复制
rgx = "(?<!\d)\d{11}(?!\d)"

但是re.findall(rg, a)给了我3456789023412345678901。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2021-12-01 15:25:38

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

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

你的原始表达式使用了负面环视表达式(?<\d)(?!\d),它们并不是在所有方面都受支持,所以我倾向于避免使用它们。此外,就语言结构而言,检测某物的存在通常比检测某物的不存在更精确。例如,如果有人问你想喝什么,你回答“不是毒药”,但你想要汽水;你不太可能得到汽水。

因此,正向环视表达式将更加健壮,(?=abc)(?<abc)

票数 0
EN

Stack Overflow用户

发布于 2021-12-01 19:51:44

尝尝这个

代码语言:javascript
复制
(?:VAT\s*number\s*)(\d{11})\s+

这不是捕获块:(?:VAT\s*number\s*)确保在之后搜索号码。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70186711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档