регулярное выражение для извлечения строки между 5-м и 6-м двоеточиями без пробела

#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. Спасибо, все работает, как ожидалось. Я пытался понять это, я получаю это по частям. Это будет здорово для многих, таких как мы, если вы сможете расшифровать его шаг за шагом.