Я хочу использовать негативный прогноз в не захватывающей группе в Perl Regex.До сих пор я создал выражение, которое не допускает 3 «пары символов» в строку
CASE 1: ^(?!(?:\w*(.)\1){3}).+$
For example the string: Mytte!3sttStrring | Not pass - 3 pairs | "tt","tt","rr"
Если вы видите, что перед группой стоит негативный прогноз, я хочу добавить это выражение вгруппа.Чтобы понять это, я представлю вам другой пример, который запрещает только одну пару или символы.
CASE 2 : no match if there is a pair in string: (?=^(?:(.)(?!\1))*$)
Если вы проверите эти 2 выражения в https://regex101.com/, вы увидите это для строки "MySampleString"на CASE 2 у меня есть 2 Информация о матче.(Полный матч и матч группы 1).Теперь, если вы запустите первый шаблон ( CASE 1 ), вы увидите только полное совпадение с информацией о совпадении.
В моей попытке добавить групповое совпадение в CASE 1, заключив в скобки:
CASE 1 my try: (^(?!(?:\w*(.)\1){3}).+$)
но теперь выражение внутри не работает: /
Я хочу найти способ, которым ^ (?! (?: \ W * (.) \ 1) {3}). + $ будет работать (с полным совпадением и совпадением группы 1).Я должен добавить эту опцию в очень длинное регулярное выражение, над которым я работаю, и оно не может работать как группа полного соответствия.Чтобы сделать его более понятным, я покажу вам пример того, что строка не должна иметь «пары символов» и в то же время не включать 4 повторения любой буквы.
(?=^(?:(.)(?!\1))*$)(?=^(?:(.)(?!(?:.*?\1){4}))*$)
Эти 2 выражения (?= ^ (?: (.) (?! \ 1)) $) и (? = ^ (?: (.) (?! (?:. ? \ 1) {4}))* $) объединены, потому что оба имеют совпадение группировки.