gpt4 book ai didi

java - 正则表达式单词末尾的特定字符

转载 作者:行者123 更新时间:2023-12-01 18:36:56 24 4
gpt4 key购买 nike


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

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

但它给了我这个(替换分组字符和“h”):

samp# sampleh samplah samp#

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

sampl# sampleh samplah sampm#

最佳答案

这会起作用:

Find what:    \b(\w+)([^lmts])(h)\b
Replace with: $1$2#

Java:

import  java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
<P>{@code java ReplaceHAtEnd}</P>
**/
public class ReplaceHAtEnd {
public static final void main(String[] igno_red) {

String sRegex = "" +
"\\b" + //word start
"(\\w+)" + //one or more characters
"([^lmts])" + //character other than l,m,t,s
"(h)" + //the letter 'h'
"\\b"; //word end

String sToSearch = "samplh sampleh samplah sampmh";
String sRplcWith = "$1$2#";
Matcher m = Pattern.compile(sRegex).matcher(sToSearch);

StringBuffer sb = new StringBuffer();
while(m.find()) {
m.appendReplacement(sb, sRplcWith);
m.appendTail(sb);
}

System.out.println(sb);
}
}

输出:

[C:\java_code\]java ReplaceHAtEnd
samplh sample# samplah sampmh sampla# sampmh

在 regexplanet 上尝试:http://fiddle.re/hnqvf

Debuggex

Regular expression visualization

关于java - 正则表达式单词末尾的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581573/

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