RegEx для поиска строк с символами и числами - PullRequest
3 голосов
/ 07 мая 2019

Я пытаюсь сопоставить строки, которые являются номерами деталей, смешанными с обычным текстом.

Вот несколько примеров.

  1. Буксировка Cntrl Ecu, Gl3t-19H378-Ac
  2. в сборе, Pwr, проверенный Gd, Priv-M50t3
  3. левый, задний, Brn-Тан, Pwr, 4DR, Mju1
  4. T-Case Ecu, 56029590AE
  5. справа, модуль слепой зоны, 284K0 9HS0F

В этих примерах я пытаюсь найти соответствие.

  1. Gl3t-19H378-Ac
  2. Priv-M50t3
  3. Mju1
  4. 56029590AE
  5. 284K0 и 9HS0F

Я нахожусь в .Net, и я использую это регулярное выражение.

(\b[a-zA-Z0-9][a-zA-Z0-9\-]{1,32}(\b|$)(?<=[0-9]))

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

1 Ответ

2 голосов
/ 07 мая 2019

Это должно сделать это:

\b[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b

Если вам нужно ограничить длину максимум 32, добавьте прогноз вперед:

\b(?=[a-zA-Z0-9-]{1,32}\b)[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b

Если символ подчеркивания в порядке, вы можете использовать [\w-] вместо [a-zA-Z0-9-].

...