我有一个以下正则表达式,它匹配双括号内的单词:
@"(?<=\[\[)[^]]+(?=\])"
问题: 我想替换输入
[[Hello]] -> Foo
[[HelloWorld]] -> Bar
代码如下:
message = message.Replace(match.Value, value.ToString());
message = Regex.Replace(message, @"[\[\]']+", "");
在输出中,我收到了FooWorld。如何修改我的正则表达式以获得Foo和Bar?
答案 0 :(得分:1)
您的正则表达式@"(?<=\[\[)[^]]+(?=\])"
匹配]
以外的1个以上字符(如果前面有[[
,后跟]
)。它与[[x x x]]
不匹配 - 就像字符串一样。它甚至不会匹配[[x y ] bracket ]]
- 就像字符串一样。
您可以使用@"\[\[(.*?)]]"
正则表达式(使用RegexOptions.Singleline
标记)获得所需内容,并替换为$1
:
message = Regex.Replace("[[Hello]]", @"\[\[(.*?)]]", "$1"));
请参阅IDEONE demo
但是,根据您当前的要求(或缺席),您可以使用
message = message.Replace("[[", "").Replace("]]", "");