首页 > 解决方案 > 正则表达式 - 单词边界

问题描述

我有两个正则表达式来识别两种不同的单词。这些是:

  1. 对于标识符:[_a-zA-Z][_0-9A-Za-z]*
  2. 对于数字: (\d*\.\d+)(([eE][-+]?\d+))|\d+

我想知道为什么单词 12aaa 被视为 2 个单词,即数字(12)后跟标识符(aaa)。

我的目的是让单词 12aaa 被视为错误的标识符。我怎么能那样做?

标签: regexlexer

解决方案


\b在正则表达式的任一端添加(匹配单词边界)。这将迫使它们仅在单词边界内匹配。所以12aaa将不再作为数字或标识符匹配。

另外,正如我在评论中提到的,您应该在 . 在你的号码正则表达式中。否则它将匹配 4a4。


推荐阅读