2014-12-23 3 views
0

У меня есть строка, как это:Группа повторного захвата Regex игнорируется?

<Field ID="{2B35B1DD-822A-47E2-9F8C-77006123FA45}" 
     Name="NCPE_QualificationTitle" 
     StaticName="NCPE_QualificationTitle" 
     DisplayName="$Resources:Exigy.NCPE.ProfessionalDirectory.Structure,Fields_NCPE_QualificationTitle_DisplayName;" 
     Description="$Resources:Exigy.NCPE.ProfessionalDirectory.Structure,Fields_NCPE_QualificationTitle_Description;" 
     Group="$Resources:Exigy.NCPE.ProfessionalDirectory.Structure,NCPE_Group;" 
     Type="Text" 
    Required="FALSE" /> 

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

(?:\$Resources:.*,).*(?:;) 

который я думал, что должен дать мне Fields_NCPE_QualificationTitle_DisplayName, поскольку это единственная часть в не захвате группы. Однако это соответствие этой строки:

"$Resources:Exigy.NCPE.ProfessionalDirectory.Structure,Fields_NCPE_QualificationTitle_DisplayName;"

Что я делаю/понимание не так?

+0

Было бы неплохо увидеть код, который вы используете, но вы уверены, что получаете захват из группы (на самом деле у вас нет групп захвата, которые я вижу), а не во всем регулярном выражении? То, что вы процитировали, выглядит (с первого взгляда) как текст, регулярное выражение которого совпадает. Затем вы можете изучить группы захвата. – Chris

ответ

1

Вам просто нужно повернуть первая не захватывающая группа к положительному lookbehind (?<=...), а вторая к положительному взгляду (?=...).

(?<=\$Resources:.*,).*(?=;) 

IDEONE

Regex rgx = new Regex(@"(?<=\$Resources:.*,).*(?=;)"); 

По умолчанию, он будет печатать Groups[0] т.е. индекс 0, который содержит все совпавшие символы.

+0

переменный положительный lookbehind ?????? – vks

+0

yep, C# поддержка этой функции. –

0
(?:\$Resources:.*,)(.*)(?:;) 

Попробуйте это и возьмите захват или группу 1 из него. Смотрите демоверсию.

https://regex101.com/r/vN3sH3/68

Ваше регулярное выражение не группа каких-либо данных, так что весь матч быть returned.Once вы приведете группы, которую вы можете получить доступ к нему, указав группу 1 или группу 2

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