regex - 正则表达式删除前一个字符,如果后跟一个字符
问题描述
我正在研究一个正则表达式。我有两个单词 1234a 和 1234。如果有“a”,我希望它只返回 123。如果没有“a”,那么我希望它返回 1234。
由于正则表达式引擎从左到右位置启动,如果存在“a”,我无法回溯删除 4。是否可以在正则表达式中做到这一点?任何帮助/建议表示赞赏。
更新:托托的答案很好。但是作为上述问题的扩展,如果这个词是 test1234asample,我需要它返回 test123,如果有“a”,如果没有“a”,则返回 test1234。我试图修改正则表达式托托,但它突出了一切。
解决方案
进行 OP 中要求的精确替换的一种方法是简单的 s/.a// 替换,它用空字符串替换以 'a' 结尾的任何长度为 2 的子字符串。无需向前看或回溯。
推荐阅读
- java - 正则表达式解析字符串以映射
- html - Link to a file outside public repository on Github
- java - How to make a subclass accessible from instance only?
- c++ - Is this code a thread-safe way to add and remove items from a vector?
- r - Is it possibe to color specific regions under the line graph in ggplot2 based on a binary variable?
- armeria - Accessing response headers using a decorator in Armeria
- c++ - How to use strings with switch
- strapi - 侧栏中不存在 Strapi 角色和权限插件?
- curve-fitting - 拟合曲线
- python - 将列表元素作为单个实际参数扩展到函数(如matlab)的Pythonic方法?