Сопоставление повторяющейся группы, разделенной трубкой - PullRequest
0 голосов
/ 12 февраля 2020

Вот мой текст:

"cn=AAAA,ou=Profils,o=SF|cn=BBBB,ou=Profils,o=SF"
"cn=CCCC,ou=Profils,o=SF"

А вот мой RegEx:

"cn=([A-Z]{4}),.*(\|cn=([A-Z0-9]{4}),.*)"

Я хочу извлечь то, что после cn=, поэтому здесь AAAA, BBBB и CCCC. Вторая строка не совпадает.

Вот мой Regex101

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

Вы можете попробовать \bcn=([A-Z]{4})\b

Объяснение:

\b - граница слова

cn= - совпадение cn= буквально

(...) - первая группа захвата

[A-Z]{4} - совпадать с заглавной буквой четыре раза

Демонстрация

Текст, который вы хотите извлечь, находится в первом captuirng группа

0 голосов
/ 12 февраля 2020

Если вы не хотите предполагать длину или тип совпадения (то есть просто сопоставить что-либо до следующей запятой):

\bcn=([^,]*)
  1. \b Совпадение слова border.
  2. `cn = 'Match" cn = ".
  3. ([,]*) Захват в группе захвата # 1 ноль или более не запятых символов (пока вы не получите запятую).

См. Regex Demo

0 голосов
/ 12 февраля 2020

Если вы просто хотите извлечь AAAA, BBBB или CCCC, не достаточно ли в этом случае "([AZ] {4})"?

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