c# - 如果后面有任何带有正则表达式的字母,如何删除单独的 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)", "")
请参阅正则表达式演示。请注意,您不需要RegexOptions.IgnoreCase
as\p{L}
并[a-zA-Z]
匹配大小写字母。
细节
\b
- 这里,一个词的开始1
- 一个1
字符(?=\p{L}+\b)
- 紧接着是 1+ 个字母,然后是单词的结尾。此外,由于这是一个不消耗字符的前瞻模式,您的替换模式可以保持为空。
推荐阅读
- wso2 - WSO2 bps:如何从 BPS 上的 BPEL 流程调用不在 ESB 上运行的 REST 服务
- pandas - 附加功能不适用于DataFrame
- excel - 在 excel VBA 中使用 Shell cmd 返回错误 53
- ios - 安装存档版本时无法安装应用程序
- javascript - 谷歌云函数与多个获取请求异步
- jmeter - Jmeter中基于条件的JSON提取
- python - 如何使用 matplotlib 在图像上绘制线条?
- arrays - 从一个数组中获取索引并更新第二个数组中相同索引上的元素
- javascript - 撤消橡皮擦笔划问题
- typescript - 如何只接受 ArrayBuffer 作为参数