正则表达式替换除大小写“0”之外的所有花括号
Posted
技术标签:
【中文标题】正则表达式替换除大小写“0”之外的所有花括号【英文标题】:Regex to replace all curly braces except for the case '0'正则表达式替换除大小写“0”之外的所有花括号 【发布时间】:2020-02-05 12:08:15 【问题描述】:我想验证一个字符串:
它可能包含零到多次出现的0
必须删除所有其他出现的 或 。
所以:'AbCde0 x1'
必须变为 'AbCde0 x1'
我试过这个:
value = Regex.Replace(value, @"(|)+(?!0)", string.Empty);
但这给了我错误:
正则表达式问题:量词(x,y) 什么都没有。
怎么了?
【问题讨论】:
【参考方案1】:你可以使用
Regex.Replace(text, @"(\0)|[]", "$1")
或者,支持...
中的任何ASCII数字,
Regex.Replace(text, @"(\[0-9]+)|[]", "$1")
见regex demo
详情
(\0)
- 捕获组 1($1
指替换字符串中的此值):0
子字符串
|
- 或
[]
-
或
。
另一种环视方法是可能的:
Regex.Replace(text, @"(?!0)|(?<!0)", string.Empty)
见another regex demo。这里,(?!0)
匹配 后面没有
0
和 (?<!0)
匹配 前面没有
0
。
【讨论】:
我最喜欢环视方法。谢谢!【参考方案2】:您可以使用环视来实现您的目标:\(?!0\)|(?<!\0)\
解释:
\(?!0\)
- 匹配 如果它后面没有
0
(由于负前瞻)
|
- 交替
(?<!\0)\
- 如果前面没有 0
,则匹配 (由于负面的后视)
Demo
代码示例:
Regex.Replace("AbCde0 x1", @"(?!0\)|(?<!\0)\", "")
【讨论】:
这个解决方案已经发布在我的回答中。带有详细信息和演示。为什么要重复?以上是关于正则表达式替换除大小写“0”之外的所有花括号的主要内容,如果未能解决你的问题,请参考以下文章