Java “如何处理字符”#&引用;用正则表达式?
我正在尝试下面的代码:Java “如何处理字符”#&引用;用正则表达式?,java,regex,string,Java,Regex,String,我正在尝试下面的代码: String txt = "D D#"; String txt2 = txt.replaceAll("\\bD\\b", "x").replaceAll("\\bD#\\b", "y"); 我正在等待获取“xy”,但它返回“xx#”。解决方案是什么?根据您编辑的问题,您希望使用单词边界进行替换 您可以使用此代码来修复: String txt = "D D#"; String txt2 = txt.replaceAll("\\bD#", "y").replaceAll("
String txt = "D D#";
String txt2 = txt.replaceAll("\\bD\\b", "x").replaceAll("\\bD#\\b", "y");
我正在等待获取
“xy”
,但它返回“xx#”
。解决方案是什么?根据您编辑的问题,您希望使用单词边界进行替换
您可以使用此代码来修复:
String txt = "D D#";
String txt2 = txt.replaceAll("\\bD#", "y").replaceAll("\\bD\\b", "x");
//=> "x y"
注意这些变化:
D
和x
的其他replaceAll
之前调用.replaceAll(“\\bD#”,“y”)
#
之后不使用单词边界\\b
,因为单词边界在非单词字符之后不匹配<代码>\b为(^\w |\w$|\w\w |\w\w)
位置断言replaceFirst
而不是replaceAll
,并将代码保留为:
String txt2 = txt.replaceFirst("\\bD\\b", "x").replaceFirst("\\bD#", "y");
下面是发生的情况:“D D”->“x x”->“x x”。。。因此,您需要从替换“D#”开始。在调用第二个
replaceAll()
时,所有的D都替换为x。试试.replaceAll(“x#”,y”)代码>调用。先替换(“D#”,“y”)
然后调用。替换(“D”,“x”)
。无需使用replaceAll
,因为这里没有使用正则表达式。@anubhava已编辑!然后使用:.replaceAll(“\\bD#”,“y”).replaceAll(\\bD\\b”,“x”)
您不能在.
之后使用\\b
,因为它不是单词字符。它刚刚回答了!谢谢您能详细介绍一下replaceFirst()吗?replaceFirst
只替换输入中第一个匹配的文本。