регулярное выражение в группе захвата - PullRequest
0 голосов
/ 07 декабря 2018

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

Например, для строки ABC ABC ABC ABc она должна захватывать только ABC ABC ABCпотому что есть строчная буква 'c' после последнего AB

Я пытался ([A-Z ]+), который захватывает ABC ABC ABC AB,

Как мне добавить отрицательный взгляд в этом контексте?

https://regex101.com/r/j8Arzu/12

Ответы [ 3 ]

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

Используйте границы слов \b, чтобы избежать совпадения частичных слов, и используйте упреждающий взгляд и отрицательный взгляд сзади, чтобы избежать пробелов в начале и в конце.

(?! )\b[A-Z ]+\b(?<! )

https://regex101.com/r/Gf37Zk/1

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

Для захвата только непрерывных заглавных букв вы можете использовать это регулярное выражение: /\b[A-Z]+\b/g

Демонстрация: https://regex101.com/r/W0VE7U/1

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

Попробуйте поставить [A-Z]\b в конце, чтобы совпадение заканчивалось на границе слова справа от слова, без совпадения ненужных пробелов.Обратите внимание, что здесь нет необходимости в группе захвата, вы можете оставить это полностью.

[A-Z ]+[A-Z]\b

https://regex101.com/r/j8Arzu/13

Если подстрока заглавной буквы может начинаться с пробела, тогда используйтета же самая техника в начале строки - ведите с \b[A-Z]:

\b[A-Z][A-Z ]*[A-Z]\b

Если вам дополнительно может соответствовать только один символ, поместите второй и третий наборы символов[A-Z ]*[A-Z] в необязательную группу:

\b[A-Z](?:[A-Z ]*[A-Z])?\b
...