Java正则表达式替换两个标记之间的所有标记,非XML
我找了一整晚,但没有一个答案能满足我的需要。他们甚至不跑。我正在寻找的是替换所有之间的Java正则表达式替换两个标记之间的所有标记,非XML,java,regex,replace,Java,Regex,Replace,我找了一整晚,但没有一个答案能满足我的需要。他们甚至不跑。我正在寻找的是替换所有之间的替换这些东西 public void updateValue(字符串标记,字符串值){ content=content.replaceAll(“(.?+)”,值); } public void updateValue(字符串标记,int值){ content=content.replaceAll(“(.?+)”,value+”); } public void updateValue(字符串标记、文件值){ co
替换这些东西
public void updateValue(字符串标记,字符串值){
content=content.replaceAll(“(.?+)”,值);
}
public void updateValue(字符串标记,int值){
content=content.replaceAll(“(.?+)”,value+”);
}
public void updateValue(字符串标记、文件值){
content=content.replaceAll(“(&=)[^&]*(&=)”,value.getPath());
}
它们都不起作用
编辑
目前的方法是,标记被regex和它的内容一起移除
private void replaceValue(String tag, String value) {
content = content.replaceAll("<"+tag+">(.*?)<\\/"+tag+">", "<"+tag+">"+value+"</"+tag+">");
}
private void replaceValue(字符串标记,字符串值){
content=content.replaceAll(“(.*?”,“+value+”);
}
content=content.replaceAll((*?),值);
已编辑从参数接受标记的答案:
content = content.replaceAll("<"+tag"+">(.*?)</"+tag+">", value);
content=content.replaceAll(它不起作用,因为您使用的模式有点奇怪,它意味着匹配任何字符
可选?
一次或多次+
检查,要解决您的问题,您必须进行一些更改,您可以使用:
content = content.replaceAll("<"+tag+">(.+?)<\\/"+tag+">", value);
//--------------------------------------^^^---^^
万一
String content = "<MySQL.port>3306</MySQL.port>";
String content=“3306”;
和tag=“tag\u name”,value=“XXXX”,reslt是:
<tag_name>XXXX</tag_name>
XXXX
它们如何不能满足您的需求??+
是该网站告诉您的不正确语法。您的需求是什么?预期结果是什么?这将替换标记名。这不是OP想要的。现在它将只替换名为标记
的标记。OP希望能够替换任何标记的内容。接受该标记作为某个值。它不能处理标记之间的空内容,也不能删除标记。(如果需要,我可以手动添加它们).EDIT replacement+by*解决了空的大小写问题,但标记仍然被删除。@WesosdeQueso输出应该是什么样子?例如3306到XXXX。它工作正常,但我必须重写和标记。它正在做:3306到XXXX所以
可以做其他事情吗?我想我会坚持我现在的一个。谢谢你的帮助.
private static void replaceValue(String tag, String value) {
String regex = "<(.*?)>(.*?)</(.*?)>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
content = content.replaceAll(matcher.group(1), tag)
.replaceAll(matcher.group(2), value)
.replaceAll(matcher.group(3), tag);
}
System.out.println(content);
}
String content = "<MySQL.port>3306</MySQL.port>";
<tag_name>XXXX</tag_name>