繁体   English   中英

正则表达式替换除大小写“{0}”之外的所有花括号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM