[英]Regex match matches one too many characters
我需要执行一些奇怪的正则表达式替换。 我已经解决了,但还不完全是。
我需要从一个字符串中删除多个子字符串,其中要删除的子字符串由方括号[]
包围, 除了在方括号后跟两个标签[]##
。
例如,如果原始字符串为:
[phase]This is []a test [I]## of the emergency broadcast system. [28]##[test]xyz
那么正则表达式替换后的预期输出将是:
This is a test [I]## of the emergency broadcast system. [28]##xyz
到目前为止,我已经尝试了一些方法,但是我想出的最接近的正则表达式模式字符串是"\\[[^\\]]*\\][^##]"
。 这样做的问题是,它比应匹配的字符多一个。 例如,使用上面的测试字符串,并用空字符串进行正则表达式替换,它将返回:
his is test [I]## of the emergency broadcast system. [28]##yz
我要搜索的正则表达式模式字符串是什么?
将您的"\\[[^\\]]*\\][^##]"
替换为"(\\[[^\\]]*\\])(([^#]{2})?)"
。
首先,您的[^##]
不遵循规则“, 除非方括号后跟两个标签[] ## ”。 因此,必须将其更改为两个非快捷字符。
其次,尝试像这样替换:
var s= Regex.Replace(input, pattern, "$2");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.