我想替换以“ h”结尾的每个单词,但是如果“ h”之前的字符是这些(l|m|t|s)之一,则无需替换。
这就是我在java中所做的事情:

String t1="samplh sampleh samplah sampmh";
System.out.print(t1.replaceAll("(l|m|t|s)h","#"));


但这给了我(替换了分组的char和“ h”):

samp# sampleh samplah samp#


它应该看起来像这样(只是“ h”必须替换为“#”):

sampl# sampleh samplah sampm#

最佳答案

这个怎么样:

(?<=[lmts])h(?=\s|$)


工作正则表达式示例:

http://regex101.com/r/iR4zV0

Java的:

String t1="samplh sampleh samplah sampmh";
System.out.print(t1.replaceAll("(?<=[lmts])h(?=\s|$)","#"));


输出:

sampl# sampleh samplah sampm#

09-11 11:02