<分区>
如何在多行模式下使用正则表达式匹配和替换文本?
我知道 RegexOptions.Multiline选项,但是在 C# 中指定匹配所有换行符的最佳方法是什么?
输入:
<tag name="abc">this
is
a
text</tag>
输出:
[tag name="abc"]this
is
a
test
[/tag]
啊哈,我发现了真正的问题。 '&' 和 ';'在 Regex 中匹配单行中的文本,而同样需要在 Regex 中转义以在有新行的情况下工作。
<分区>
如何在多行模式下使用正则表达式匹配和替换文本?
我知道 RegexOptions.Multiline选项,但是在 C# 中指定匹配所有换行符的最佳方法是什么?
输入:
<tag name="abc">this
is
a
text</tag>
输出:
[tag name="abc"]this
is
a
test
[/tag]
啊哈,我发现了真正的问题。 '&' 和 ';'在 Regex 中匹配单行中的文本,而同样需要在 Regex 中转义以在有新行的情况下工作。
最佳答案
如果您的意思是必须有一个换行符才能匹配表达式,那么\n
会为您做到这一点。
否则,我认为您可能误解了 Multiline/Singleline旗帜。如果您希望您的表达式匹配多行,您实际上需要使用 RegexOptions.Singleline
。这意味着它将整个输入字符串视为单行,从而忽略换行符。这就是你想要的......?
示例
Regex rx = new Regex("<tag name=\"(.*?)\">(.*?)</tag>", RegexOptions.Singleline);
String output = rx.Replace("Text <tag name=\"abc\">test\nwith\nnewline</tag> more text...", "[tag name=\"$1\"]$2[/tag]");
关于c# - C# 中的多行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780009/