[英]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.