问题:
输入:1b-12
输出:b-2
期望输出:b-12
我当前使用的代码:
Regex.Replace("1b-12", @"b1(w+)b", @"$1", RegexOptions.IgnoreCase);
问题:
如何将正则表达式修改为1b=b,但将11b保留为11b,将11保留为11?
谢谢你的帮助。
由于w
匹配字母、数字、下划线和一些组合标记,因此应使用p{L}
,或者-如果需要只允许ASCII字母-使用[a-zA-Z]
。
一个示例解决方案,在单词开头匹配1
,然后包含1+个字母:
Regex.Replace("1b-12", @"b1(?=p{L}+b)", "")
Regex.Replace("1b-12", @"b1(?=[a-zA-Z]+b)", "")
请参阅regex演示。请注意,您不需要RegexOptions.IgnoreCase
,因为p{L}
和[a-zA-Z]
都匹配小写字母和大写字母。
详细信息
b
-这里是单词的开头1
-一个1
字符(?=p{L}+b)
-紧接着是1+个字母,然后是单词的末尾。此外,由于这是一个不消耗字符的前瞻模式,因此替换模式可以保持为空