регулярное выражение - границы слова - PullRequest
0 голосов
/ 08 мая 2018

У меня есть два регулярных выражения для определения двух разных типов слов. Это:

  1. для идентификатора: [_a-zA-Z] [_ 0-9A-Za-z] *
  2. для номера: (\ d * \. \ D +) (([eE] [- +]? \ D +)) | \ d +

Я хотел бы знать, почему слово 12aaa рассматривается как 2 слова, которые представляют собой число (12), за которым следует идентификатор (aaa).

Моя цель состоит в том, чтобы слово 12aaa воспринималось как неправильный идентификатор. Как я мог это сделать?

1 Ответ

0 голосов
/ 08 мая 2018

Добавьте \b (соответствует границе слова) на любом конце ваших регулярных выражений. Это заставит их совпадать только в пределах слов. Так что 12aaa больше не будет совпадать ни как число, ни как идентификатор.

Кроме того, как я уже упоминал в моем комментарии, вы должны иметь \ перед. в вашем числе регулярное выражение. В противном случае оно будет соответствовать 4a4.

...