Regex, ищите заглавные буквы, но не включайте цифры, начинающиеся со знака доллара - PullRequest
0 голосов
/ 05 января 2019

У меня есть строки, которые похожи на это ...

Если вы хотите делать покупки в магазине, используйте этот купон ZXXZX123, чтобы сэкономить 20 долларов на покупках в магазине на сумму 100 долларов или больше или 100 долларов на 500 долларов или больше. "

В конце концов, все, что я хочу, это ZXXZX123

Я начал с поиска заглавных букв и цифр, которое должно содержать не менее 2 символов. После этого я не уверен, как не включать другие. Я предполагаю, что другие фразы включают в себя такие вещи, как скидка 20%, поэтому я тоже не хочу включать эти типы чисел.

[A-Z0-9]{2,}

Ответы [ 4 ]

0 голосов
/ 05 января 2019

Простое исключение знака доллара будет соответствовать другим символам, например пробелам. Так что это не сработает: [^\\$] [A-Z0-9]{2,}

Вместо этого сопоставьте пробелы, предшествующие коду, но исключите его с помощью группы захвата: [\\s]([A-Z0-9]{2,}) и в вашем матче или замене ссылочной группы № 1. См. https://regexr.com/45shq

0 голосов
/ 05 января 2019

Пожалуйста, используйте это регулярное выражение, оно будет захватывать только коды купонов.

Регулярное выражение: '[A-Z][A-Z0-9]+'

Пояснение:
[A-Z]: первая буква алфавита и верхний регистр.
[A-Z0-9]+: Начиная со второй буквы и далее он будет искать комбинацию цифр 0-9 или / и алфавита, которая находится в верхнем регистре.

Ссылка на пример: https://regex101.com/r/XU3AID/1

Дайте мне знать, если у вас есть какие-либо вопросы.

0 голосов
/ 05 января 2019

Вы можете разделить выражения соответствия для символов верхнего регистра и цифр, а затем объединить их с "not $" в середине.

[A-Z] + [^ \ $] [0-9] +

0 голосов
/ 05 января 2019

Вы можете использовать обходные пути, чтобы убедиться, что вы соответствуете целому слову (строка между пробелами):

(?<=\s|^)[A-Z0-9]{2,}(?=\s|$)

Демо

Пояснение:

  • (?<=\s|^) является положительным взглядом сзади, он гарантирует наличие пробела перед следующим сопоставляемым символом или что это начало строки
  • (?<=\s|$) является положительным прогнозом, это гарантирует, что после предшествующего символа, который соответствует последующему символу, стоит после, это конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...