Начните с буквы, должен содержать буквы и цифры - PullRequest
4 голосов
/ 30 октября 2019

Я часами пытался найти регулярное выражение, соответствующее этому creteria:

Нужно найти большой текст следующего содержания:

  • Начать с 2 цифр
  • Заканчивается на ""
  • точными 7 символами
  • Должен содержать цифру и буквы
  • только буквы заглавные

Здесь текстовый пример: (нужночтобы соответствовать "159C5F"

AT exempt acc to §§ 4 Nr. 1A UStG iVm 6 USTG
                                                                                                                            254,49/100L    977,23
159C5F Magnatec St-St 0W-30 D, 20L E4                                                                                                   0,00%
Commodity Code :

Вот несколько моих попыток:

(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{6})
[0-9]{2}\S*[a-zA-Z0-9]{4}
[0-9]\S*[a-zA-Z0-9]{6}
[a-zA-Z0-9]{6}

Ответы [ 2 ]

4 голосов
/ 30 октября 2019

Если я правильно понимаю ваши требования, вы можете использовать что-то вроде этого:

\b\d\d(?=\S*?[A-Z]\S*?\s)[A-Z0-9]{4}\s

Демо .

Некоторые примечания:

  • Если вы не хотите захватывать пространство в конце, вы можете заменить заключительный \s на Lookahead (то есть (?=\s)).

  • Если вы хотите принять только пробел ASCII и никакие другие пробельные символы, вы можете использовать [ ] вместо \s в обоих случаях.

2 голосов
/ 30 октября 2019

Вы можете использовать границы слов и положительный прогноз, чтобы утверждать пробел в конце, но не совпадать с ним для соответствия, чтобы получить только 159C5F

\b\d{2}(?=[A-Z0-9]{4} )[A-Z0-9]*[A-Z][A-Z0-9]*\b
  • \b Граница слова
  • \d{2} Совпадение 2 цифр
  • (?= Позитивный прогноз, утверждают, что справа -
    • [A-Z0-9]{4} Совпадение 4 раза с любым из перечисленных, за которым следует пробел
  • ) Закрыть взгляд вперед
  • [A-Z0-9]*[A-Z][A-Z0-9]* Совпадение 0+ раз A-Z0-9 с хотя бы одним заглавным символом
  • \bГраница слова

Regex demo

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