R соответствует множественному отрицательному взгляду и отрицательному взгляду - PullRequest
0 голосов
/ 01 марта 2019

Когда я сопоставляю несколько негативных взглядов или несколько негативных взглядов сзади, я обнаруживаю, что поведение Р. отличается.Для иллюстрации предположим, что я хочу сопоставить все, что следует за z, кроме a, d, bd или bcd в str.Работает следующее регулярное выражение:

grep("z(?!a|(bc?)?d)",str,perl=TRUE)

Далее я хочу сопоставить все, что предшествует z, кроме a, b, bd или bcd в str.Регулярное выражение, построенное подобным образом, терпит неудачу (недопустимое регулярное выражение):

grep("(?<!a|b(c?d)?)z",str,perl=TRUE)

Следовательно, я должен использовать довольно громоздкое регулярное выражение:

grep("(?<!a|b)(?<!bd)(?<!bcd)z",str,perl=TRUE)

Кажется, что в случае (отрицательного) посмотрим, если я хочу использовать оператор «или» |, то подвыражения должны быть одинаковой длины, но в случае (отрицательного) заглядывания такого ограничения нет.

Я что-то здесь пропускаю?Моя проблема в том, что у меня есть много образцов, которые можно сопоставить в негативном случае.Использование |а также ?существенно упростит регулярное выражение, но по причинам, изложенным выше, я не могу их использовать.Как решить эту проблему?

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