2013-08-14 4 views
1

Я этот пример строки:Regex чтобы группы разделяются тегами

blablablablaGROUP1blablablablaGROUP2blablablablaGROUP3blablablabla 

Узор, который Разделить группы является GROUP\d, как вы можете видеть.

Я хотел бы получить этот результат в группах, как это:

  1. GROUP1blablablabla
  2. GROUP2blablablabla
  3. GROUP3blablablabla

Количество групп может быть от 0 до п.

Я попытался с этим, но не повезло на данный момент:

(GROUP\d.*(?=GROUP\d)) 

Я работаю с .NET.

+0

«группы» немного сбивает с толку, так как есть соответствующие группы. Я думаю, что термин «совпадения» лучше всего подходит здесь. – HamZa

ответ

0

это даст вам 3 группы:

(GROUP\d.*?(?=GROUP\d|$)) 
+2

Не забудьте [объяснить рисунок] (http://meta.stackexchange.com/questions/177757/are-answers-that-just-contain-a-regular-expression-pattern-really-good-answers) – HamZa

1

Вам нужно что-то вроде ..

(GROUP\d.*)+$ 

..

(      group and capture to \1 (1 or more times) 
GROUP     match 'GROUP' 
    \d     match a digit (0-9) 
    .*     any character except newline (0 or more times) 
)+      end of \1 +(match 1 or more times) 
$      end of string 
1

Вы можете также использовать

(GROUP((?!GROUP).)+) 

Значение

(  start of capturing group 
GROUP Match the string literal GROUP 
(
    (?!GROUP) Negative lookahead to makesure the text after the current match charater is not GROUP 
.)+  Repeat the same 1 or more times 

Вы можете получить доступ к этим группам, как 1, 2, 3 (3 матчей, как на ваш вход)

Смежные вопросы