Javacc регулярное выражение, чтобы пропустить все символы, если конкретный символ не найден - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу пропустить все символы, если не найду конкретные символы.Например, для последовательности строк ниже:

--dfdfdffdfdfefsd@ : 
sdsdsdsadsad
hkkldjsfsdf , ! : 
%ABC-1.[0-7]

Я хочу регулярное выражение javacc, которое пропускает все символы, если не находит %ABC-1.[0-7].

Обычное регулярное выражение для этого было бы .*?%ABC-1.[0-7], но для javacc я нашел что-то вроде ~[]?%ABC-1.[0-7].Но это не работает.

Не могли бы вы предложить, что должно быть правильное регулярное выражение javacc эквивалентно обычному регулярному выражению .*?%ABC-1.[0-7]?

Спасибо

1 Ответ

0 голосов
/ 23 ноября 2018

Если вам нужно одно регулярное выражение, которое соответствует всем символам вплоть до %ABC-1.[0-7], вы можете сделать это.

TOKEN { <FOO : (~[])* "%ABC-1.[0-7]" > }

Если вам нужно одно регулярное выражение, которое соответствует, но не включая %ABC-1.[0-7] это невозможно, поскольку JavaCC не позволяет использовать правильный контекст.Вместо этого вы можете сделать следующее:

TOKEN { <CHAR : ~[]> }
TOKEN { <FOO : "%ABC-1.[0-7]" > }

В любом случае вы, вероятно, захотите изменить состояние после сопоставления токена FOO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...