正则表达式 - 单词边界

时间:2018-05-07 21:51:02

标签: regex lexer

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

  1. 用于标识符:[_ a-zA-Z] [_ 0-9A-Za-z] *
  2. 代号:(\ d * \。\ d +)(([eE] [ - +]?\ d +))| \ d +
  3. 我想知道为什么单词12aaa被视为2个单词,它是一个数字(12),后跟一个标识符(aaa)。

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

1 个答案:

答案 0 :(得分:1)

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

另外,正如我在评论中提到的那样,你应该有一个\在前面。在您的号码正则表达式。否则它将匹配4a4。