如何替换正则表达式中匹配单词的最后一个字符串?

时间:2018-04-06 14:14:13

标签: regex

我想使用正则表达式将字母a替换为带有EI的单词中包含e的所有单词,然后需要从单词中删除最后一个e。 例如:

  • date将成为deit

  • cat将保持cat

  • jane将成为jein

我已经编写了一个正则表达式,用最后有e的单词取代了EI,但是我无法删除最后一个e

我的正则表达式:s/a(?=.*e\b)/EI/g

2 个答案:

答案 0 :(得分:1)

您当前正则表达式的问题:

s/a(?=.*e\b)/EI/g.

.*贪婪,并且会匹配单词。例如,您的模式会定位a中的banana edible,因为.*会在其他单词中检测到e。相反,尝试这个查找并替换:

<强>查找

a(?=[A-Za-z]*e\b)

<强>替换

ei

以下示例显示模式正确标识a个字母,以e结尾的单词替换:

Demo

答案 1 :(得分:1)

查找并替换以下内容

<强>查找 ([a-zA-Z]*)(a)([a-zA-Z]*)(e\b)

([a-zA-Z]*)在首次出现a

之前确保零个或多个字母

(a)确保a存在

([a-zA-Z]*)在首次出现a

之前确保零个或多个字母

(e\b)确保单词以e

结尾

<强>替换: $1ei$3

$1 - 第一个捕获组

而不是第二个捕获组(a)替换为ei

$3 - 第三个捕获组

第四个捕获组被省略,因此它最后删除了e

<强> Demo