VB.NET正则表达式删除字符,除非它在'<之间>'

时间:2017-10-15 10:53:16

标签: regex vb.net

我想删除文本中的所有换行符(\ n),除非它在'>'之间。和'<'。

示例:

输入:

"test text \n another\n something\n <br>\n<p>new te\nxt\n etc..."

例外:

"test text  another something <br>\n<p>new text etc..."

首先,我试试这个(VB.NET):

X = "[^>]\n[^<]"
Y = Regex.Replace(Text, X, "")

它几乎可以工作,但它删除了两个相邻的角色。

所以我试试这个(VB.NET):

X = "(?<=[^>]\b)\n(?=\b[^<])"
Y = Regex.Replace(Text, X, "")

但它不起作用......

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

Dim text As String = "test text \n another\n something\n <br>\n<p>new te\nxt\n etc..."
Dim X As String = "((?<=[^>])\\n)|(\\n(?=[^<]))"
Dim Y As String = Regex.Replace(text, X, "")

<强>解释

如果新行不跟随((?<=[^>])\\n)字符,则正则表达式的第一部分(>)匹配。如果新行不在(\\n(?=[^<]))字符之前,则正则表达式的第二部分(<)匹配。在这两个匹配项中,新行被替换为空字符串。