Переместить регулярное выражение вперед на один символ - PullRequest
0 голосов
/ 01 декабря 2018

Я ищу выражения между точкой и точкой с запятой - это выражение само по себе не может содержать точки или точки с запятой.

На данный момент это мое регулярное выражение.

(?!\..*?\..*?;)\..*?;

Регулярное выражение в основном говорит: «Найти строку между точкой и точкой с запятой. Однако, после определения периода-кандидата, если за ним в конце следует другой период до достижения точки с запятой, я хочу ее дисквалифицировать».

Это делает то, что я хочу, за исключением того, что я не хочу включать начальный период в совпадении (ни конечную точку с запятой).Я пытался двигаться вперед с группой без захвата (?!\..*?\..*?;)(?:\.).*?;, но я получил тот же результат.Как я могу опустить точку (и точку с запятой) как часть матча?Я использую Sublime 3 для поиска регулярных выражений.

1 Ответ

0 голосов
/ 01 декабря 2018

Звучит так, как будто вы захотите использовать вместо этого набор отрицательных символов, что позволит вам сопоставить любой символ , но с теми, которые вы положили в набор (исключая точки и точки с запятой).Затем используйте lookahead, чтобы проверить, что непериодические символы сопровождаются точкой с запятой, без фактического совпадения точки с запятой, и используйте lookbehind, чтобы убедиться, что шаблону непосредственно предшествует точка:

Таким образом, шаблон

(?<=\.)[^.;]+(?=;)

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

https://regex101.com/r/E8XsDB/2

...