[英]Regex to replace all curly braces except for the case '{0}'
我想验证一个字符串:
{0}
所以: 'AbC{de{0} x{1}}'
必须变成'AbCde{0} x1'
我试过这个:
value = Regex.Replace(value, @"({|})+(?!{0})", string.Empty);
但这给了我错误:
正则表达式问题:量词(x,y)什么都不做。
怎么了?
您可以使用
Regex.Replace(text, @"(\{0})|[{}]", "$1")
或者,要支持{...}
内的任何 ASCII 数字,
Regex.Replace(text, @"(\{[0-9]+})|[{}]", "$1")
查看正则表达式演示
细节
(\{0})
- 捕获组 1( $1
指替换字符串中的此值): {0}
substring|
- 或者[{}]
- 一个{
或}
。另一种带有环视的方法是可能的:
Regex.Replace(text, @"{(?!0})|(?<!{0)}", string.Empty)
查看另一个正则表达式演示。 在这里, {(?!0})
匹配一个{
后面没有0}
并且(?<!{0)}
匹配一个}
前面没有{0
。
您可以使用环视来实现您的目标: \{(??0\})|(?<!\{0)\}
解释:
\{(?!0\})
- 匹配{
如果它后面没有0}
(由于负前瞻)
|
- 交替
(?<!\{0)\}
- 匹配}
如果它前面没有{0
(由于负面的后视)
代码示例:
Regex.Replace("AbC{de{0} x{1}}", @"{(?!0\})|(?<!\{0)\}", "")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.