[英]How can i match this text with a regex?
我试图做一个正则表达式来匹配一段代码,但是没有成功。 该表达式在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>\\*/
真正的C#正则表达式模式的一个很好的工具是code.google.com上的regex-freetool
RegexOptions.Multiline
仅更改^
和$
的语义-您需要RegexOptions.Singleline
来使.
也匹配线尾(我一直迷惑自己;-)。
以下将解决问题:
/\*<parameters>\*/(.|\r|\n)*/\*</parameters>\*/
或者,如果您想从匹配项本身中排除外部标记:
(?<=/\*<parameters>\*/)(.|\r|\n)*(?=/\*</parameters>\*/)
在打开正则表达式的“多行”选项后,您的正则表达式应与您指定的所有文本匹配。
如Alex所述,您可以使用Singleline修饰符让点匹配换行符(\\ r和\\ n)。 您还可以使用内联形式- (?s)
-在正则表达式本身中指定它:
(?s)/*<parameters>*/(?<value>.*?)/*</parameters>*/还要注意勉强的量词:“
.*?
”。
如果文本中存在多个潜在匹配,
否则,您将从第一个<parameters>
标记匹配到最后一个</parameters>
标记。
我不想给你这个问题,所以您可能想尝试一下Ultrapico的免费工具(已注册),称为Expresso 。
我在Regex上跌跌撞撞已经有好几次了,而Expresso在所有情况下都节省了一天的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.