Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式替换两个标记之间的所有标记,非XML_Java_Regex_Replace - Fatal编程技术网

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>