#regex #regex-group #regex-greedy
#регулярное выражение #регулярное выражение-группа #регулярное выражение -жадное
Вопрос:
Я работаю над регулярным выражением, чтобы извлечь строку между 5-й и 6-й строками. Мне нужно извлечь ее без пробела, так как пробел находится между двоеточиями. Ниже приведен пример, из которого я должен извлечь
Облако Abc: Xyz: Windows: Non Prod: Silver : ATC123XYZ: служба AQW не работает
Я пробовал : (. ?):
, однако он возвращает: Xyz :,: Non Prod : и : ATC123XYZ : . То, что я хочу, это только ATC123XYZ.
Ответ №1:
Вы можете попробовать:
^(?:[^:] s*:s*){5}([^:s] )
ДЕМОНСТРАЦИЯ
Объяснение:
^ from the start of the input
(?: match (but don't capture)
[^:] s*:s* any term followed by :
){5} match exactly 5 of these
([^:s] ) then match AND capture the 6th term
Нужный вам термин будет доступен в первой группе захвата.
Комментарии:
1. Спасибо, все работает, как ожидалось. Я пытался понять это, я получаю это по частям. Это будет здорово для многих, таких как мы, если вы сможете расшифровать его шаг за шагом.