gpt4 book ai didi

java - 使用正则表达式匹配每个单词中第一次出现的字母

转载 作者:行者123 更新时间:2023-11-30 08:54:00 24 4
gpt4 key购买 nike

我正在尝试用“ee”替换单词开头以外的单词中第一次出现的“I”。我正在使用 Java。

这应该改变短语

INFINITY IS GIANT.

收件人:

INFeeNITY IS GeeANT.

到目前为止,我的代码已经经历了几次修改。一个是:

replaceAll("(?<=[^I*])\\BI", "ee");

我认为这就是使用后视。非常感谢您的帮助!谢谢。

最佳答案

如您在 OP \\BI 中所述,找到不在单词开头的第一个 I 字符 - 如果正则表达式匹配其余部分这个词,使用 (?:\\B.)*.*?\\b,那么它不会匹配第二个 I 同一个词。

"INFINITY IS GIANT".replaceAll( "\\BI((?:\\B.)*)", "ee$1");
"INFINITY IS GIANT".replaceAll( "\\BI(.*?\\b)", "ee$1");

两者都会导致:

INFeeNITY IS GeeANT

即使文本中有重音符号,它也能起作用:

"IŇFINIŦŶ IS ĞIANŤ".replaceAll( "\\BI((?:\\B.)*)", "ee$1");
"IŇFINIŦŶ IS ĞIANŤ".replaceAll( "\\BI(.*?\\b)", "ee$1");

两个输出:

IŇFeeNIŦŶ IS ĞeeANŤ

或者

使用 \\b(.(?:\\B.)*?)\\BI 可以从单词的开头匹配到第一个 I:

"INFINITY IS GIANT".replaceAll( "\\b(.(?:\\B.)*?)\\BI", "$1ee");

输出:

 INFeeNITY IS GeeANT

关于java - 使用正则表达式匹配每个单词中第一次出现的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572028/

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