我想有条件地删除指定的开始和停止分隔符之间的文本块。下面的代码不起作用,但希望它足以说明我想要完成的任务。
If dr("ReferralPoints") > 0 Then
Dim objRegex As Regex = New Regex("[HASNOVALUE:REFERRALPOINTS](.*)[/HASNOVALUE:REFERRALPOINTS]", RegexOptions.IgnoreCase + RegexOptions.Singleline)
Dim result As String = objRegex.Replace(strBody, "")
End If
答案 0 :(得分:3)
正则表达式必须如下:
\[HASNOVALUE:REFERRALPOINTS](.*)\[/HASNOVALUE:REFERRALPOINTS]
你需要在这里转义[
,因为它是一个正则表达式元字符。
在VB.NET中,(based on this quick reference sheet)看起来\
不是转义字符,所以你可以简单地写成:
"\[HASNOVALUE:REFERRALPOINTS](.*)\[/HASNOVALUE:REFERRALPOINTS]"
此外,如果你不知道,(.*)
是贪婪的,并且将采取最长的匹配。您可能需要(.*?)
,但这实际上取决于问题定义。
---AxxZ----AxxZ----
^^^^^^^^^^^^
A(.*)Z
答案 1 :(得分:0)
你需要逃避方括号吗?在许多其他正则表达式语言中,方括号创建character class,这意味着引擎只需找到括号内的一个字符即可将其称为匹配。
如果你使用反斜杠'\'
转义括号,这可能就足够了。不过,我会是第一个承认我不确定ASP.NET的人。