c# - C# 中的多行正则表达式

标签 c# 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/

相关文章:

php - "example@something.com"-> "example"PHP

php - 需要用 RegExp 选择 2 个字母

sed - 用于插入命令的复杂 sed 命令

c# - 为什么这个动态参数不起作用?

c# - 如何在 VS 2013 中调试 Windows Phone (8) 运行时组件或 C++ DLL 中的 C++ 代码

c# - 测试 Powershell 脚本的正确性

用于将单词列入黑名单的 JavaScript 正则表达式

c# - MVVM 何时为控件创建 View 模型?

c# - 在Docker容器中部署后,导出后C#文件未显示

python - 为什么要在 python 正则表达式中使用 re.purge()?