gpt4 book ai didi

java - 从字符串中删除 eed 的正则表达式

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:30 24 4
gpt4 key购买 nike

我正在尝试替换 'eed' and 'eedly' with 'ee'来自任一术语前有元音的单词 ('eed' or 'eedly')出现。

例如,单词 indeed会变成indee因为在 'eed' 之前有一个元音 ('i')。另一方面,单词 'feed'不会改变,因为后缀 'eed' 前没有元音字母.

我有这个正则表达式:(?i)([aeiou]([aeiou])*[e{2}][d]|[dly]\\b)你可以看到这个 here 发生了什么.

如您所见,这是正确识别以 'eed' 结尾的单词, 但它没有正确识别 'eedly' .

此外,当它进行替换时,它会替换所有以 'eed' 结尾的单词,甚至像 feed 这样的词它不应该删除 eed

我应该考虑什么才能让它根据我指定的规则正确识别单词?

最佳答案

您可以使用:

str = str.replaceAll("(?i)\\b(\\w*?[aeiou]\\w*)eed(?:ly)?", "$1ee");

Updated RegEx Demo

\\b(\\w*?[aeiou]\\w*)eedeedly 之前确保有在此之前同一个词中至少有一个元音。

加快此正则表达式,您可以使用否定表达式正则表达式:

\\b([^\\Waeiou]*[aeiou]\\w*)eed(?:ly)?

正则表达式分解:

\\b                 # word boundary
( # start captured group #`
[^\\Waeiou]* # match 0 or more of non-vowel and non-word characters
[aeiou] # match one vowel
\\w* # followed by 0 or more word characters
) # end captured group #`
eed # followed by literal "eed"
(?: # start non-capturing group
ly # match literal "ly"
)? # end non-capturing group, ? makes it optional

替换为:

"$1ee" which means back reference to captured group #1 followed by "ee"

关于java - 从字符串中删除 eed 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com