我试图用“ee”替换单词开头以外的单词中第一次出现的“I”。我正在使用java。
这应该改变短语
INFINITY IS GIANT.
要:
INFeeNITY IS GeeANT.
到目前为止,我的代码已经过多次修改。一个是:
replaceAll("(?<=[^I*])\\BI", "ee");
我认为这是使用lookbehind。非常感谢帮助!感谢。
答案 0 :(得分:2)
正如您在OP \\BI
中所述,发现第一个I
字符不在单词的开头 - 如果正则表达式匹配单词的其余部分,则使用{{1} }或(?:\\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");
答案 1 :(得分:0)