如果后面跟任何带有正则表达式的字母,如何删除 lone 1?



问题:

输入: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+个字母,然后是单词的末尾。此外,由于这是一个不消耗字符的前瞻模式,因此替换模式可以保持为空

最新更新