Я попытался сделать выражение регулярного выражения для соответствия фрагменту кода, но не успел. Выражение не работает в 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>*/
Может кто-нибудь мне помочь?
спасибо, Родриго Лобо
Попробуйте выполнить это регулярное выражение: /\*<parameters>\*/(?<value>[^/]*)/\*</parameters>\*/
Хороший инструмент для обмана с помощью реальных шаблонов регулярных выражений С# - regex-freetool на code.google.com
RegexOptions.Multiline
изменяет только семантику ^
и $
- вам нужно RegexOptions.Singleline
, чтобы .
совпадало с концами строк (путаница, которую я поймал сам;).
Следующее выполнит трюк:
/\*<parameters>\*/(.|\r|\n)*/\*</parameters>\*/
Кроме того, если вы хотите исключить внешние маркеры из самого совпадения:
(?<=/\*<parameters>\*/)(.|\r|\n)*(?=/\*</parameters>\*/)
Как сказал Алекс, вы можете использовать модификатор Singleline, чтобы точка совпадала с символами новой строки (\ r и \n). Вы также можете использовать встроенную форму - (?s)
- для указания ее внутри самого регулярного выражения:
(?s)/*<parameters>*/(?<value>.*?)/*</parameters>*/Также обратите внимание на неохотный квантификатор: "
.*?
". Это в случае, если в тексте имеется более одного потенциального совпадения; в противном случае вы бы соответствовали первому тегу <parameters>
последнему тегу </parameters>
.Ваше регулярное выражение должно соответствовать всему тексту, который вы указали, после включения регулярного выражения "Многострочный" вариант.
Я не хочу давать вам рыбу для этого вопроса, поэтому вы можете попробовать этот бесплатный инструмент (с регистрацией) у Ultrapico под названием Expresso.
Я несколько раз наткнулся на Regex, и Expresso сохранил этот день во всех случаях.