regex - 正则表达式 - 单词边界
问题描述
我有两个正则表达式来识别两种不同的单词。这些是:
- 对于标识符:[_a-zA-Z][_0-9A-Za-z]*
- 对于数字: (\d*\.\d+)(([eE][-+]?\d+))|\d+
我想知道为什么单词 12aaa 被视为 2 个单词,即数字(12)后跟标识符(aaa)。
我的目的是让单词 12aaa 被视为错误的标识符。我怎么能那样做?
解决方案
\b
在正则表达式的任一端添加(匹配单词边界)。这将迫使它们仅在单词边界内匹配。所以12aaa
将不再作为数字或标识符匹配。
另外,正如我在评论中提到的,您应该在 . 在你的号码正则表达式中。否则它将匹配 4a4。
推荐阅读
- c# - 初始化时未设置 WPF 依赖项属性
- windows - 使用 PuTTY Plink 执行 .ps1 文件时出现意外字符
- c++ - 钻石问题| 不调用祖父类的参数化构造函数
- amazon-web-services - 将私有 API GW api 列入白名单,可从另一个账户的 VPC 访问
- docker - Dockerfile 中的多个 RUN 条目和只有一个 RUN 条目有什么区别?
- terraform - 如何使用 Terraform 将密钥加载到 IBM KeyProtect
- puppet - 在课堂上,这段代码设置了什么?这是什么 is_a(arg1,arg2)?
- regex - 正则表达式。从列表中选择第二个值
- c# - 解析作为 exe C# 的输入参数提供的 json 字符串
- android - Pepper 取消运行动画