首页 > 解决方案 > 正则表达式删除前一个字符,如果后跟一个字符

问题描述

我正在研究一个正则表达式。我有两个单词 1234a 和 1234。如果有“a”,我希望它只返回 123。如果没有“a”,那么我希望它返回 1234。

由于正则表达式引擎从左到右位置启动,如果存在“a”,我无法回溯删除 4。是否可以在正则表达式中做到这一点?任何帮助/建议表示赞赏。

更新:托托的答案很好。但是作为上述问题的扩展,如果这个词是 test1234asample,我需要它返回 test123,如果有“a”,如果没有“a”,则返回 test1234。我试图修改正则表达式托托,但它突出了一切。

标签: regexconditional-statements

解决方案


进行 OP 中要求的精​​确替换的一种方法是简单的 s/.a// 替换,它用空字符串替换以 'a' 结尾的任何长度为 2 的子字符串。无需向前看或回溯。


推荐阅读