Как я могу сопоставить этот текст с регулярным выражением? - PullRequest
2 голосов
/ 29 мая 2009

Я пытался создать выражение регулярного выражения для соответствия коду, но безуспешно. Выражение не работает в vs2008.

Я создал это:

/\*<parameters>\*/(?<value>[\r\n]*.*)/\*</parameters>\*/

источник для сопоставления:

/*<parameters>*/ 
@parameter blue
,@parameter2 red
,@parameter3 green
,@parameter4 yellow /*</parameters>*/

Или лучше:

/*<parameters>*/  \r\n @parameter blue \r\n ,@parameter2 red \r\n ,@parameter3 green \r\n ,@parameter4 yellow /*</parameters>*/

Кто-нибудь может мне помочь?

спасибо, Родриго Лобо

Ответы [ 6 ]

4 голосов
/ 29 мая 2009

Попробуйте это регулярное выражение: /\*<parameters>\*/(?<value>[^/]*)/\*</parameters>\*/

Хорошим инструментом для игры с реальными шаблонами c # Regex является regex-freetool на code.google.com

2 голосов
/ 29 мая 2009

RegexOptions.Multiline только изменяет семантику ^ и $ - вам нужно RegexOptions.Singleline, чтобы . также соответствовал концам строк (путаница, которую я поймал в себе ;-).

1 голос
/ 29 мая 2009

Следующие хитрости помогут:

/\*<parameters>\*/(.|\r|\n)*/\*</parameters>\*/

Либо, если вы хотите исключить внешние токены из самого матча:

(?<=/\*<parameters>\*/)(.|\r|\n)*(?=/\*</parameters>\*/)
0 голосов
/ 29 мая 2009

Как сказал Алекс, вы можете использовать модификатор Singleline, чтобы точка соответствовала символам новой строки (\ r и \ n). Вы также можете использовать встроенную форму - (?s) - чтобы указать ее в самом регулярном выражении:

(?s)/*<parameters>*/(?<value>.*?)/*</parameters>*/
Также обратите внимание на квантификатор с неохотой: ".*?". Это на случай, если в тексте более одного потенциального совпадения; в противном случае вы бы сопоставили первый тег <parameters> с последним тегом </parameters>.
0 голосов
/ 29 мая 2009

Я не хочу давать вам рыбу для этого вопроса, поэтому вы можете попробовать этот бесплатный инструмент (с регистрацией) от Ultrapico под названием Expresso .

Я несколько раз спотыкался с Regex, и Expresso спас день на все случаи жизни.

0 голосов
/ 29 мая 2009

Ваше регулярное выражение должно соответствовать всему указанному вами тексту после включения параметра «Многострочный».

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