需要java正则表达式从特定字符串中删除/替换XML元素
我在获取正确的正则表达式时遇到问题。我将下面的xml作为字符串需要java正则表达式从特定字符串中删除/替换XML元素,java,regex,Java,Regex,我在获取正确的正则表达式时遇到问题。我将下面的xml作为字符串 <user_input> <UserInput Question="test Q?" Answer=<value>0</value><sam@testmail.com>" </user_input> 您需要将?放在第一组中,使其不贪婪,而且您不需要答案=*?: str1.replaceAll("<([^<]*?)>", "$1") str1.r
<user_input>
<UserInput Question="test Q?" Answer=<value>0</value><sam@testmail.com>"
</user_input>
您需要将?
放在第一组中,使其不贪婪,而且您不需要答案=*?
:
str1.replaceAll("<([^<]*?)>", "$1")
str1.replaceAll(httpRequest.send(“msg=“+data+”&TC=“+TC”);
尝试这样做虽然Java不支持可变宽度的look behinds,但您可以使用{01000}
解决它,这应该足够了
请使用2个正则表达式或1个正则表达式和1个replace
检查此方法。选择最适合的方法(我从第一个输入字符串中删除了\n
换行符,以使用简单的replace
显示缺陷):
String input=“你能详细说明一下“没有解决”吗?那么,你还想在
我只能删除这个内部应答属性。如果我的字符串包含一些其他有效的xml,比如它不应该触及该属性..答案的整体外部=”,它不应该这样做anything@samash因此,使用正则表达式不是解析(X)的好选择HTML你可以考虑一个合适的解析器!我测试了它没有完全工作。它取代了用户输入的标签。问题是我们不必解析XML,因为我们是中间件,答案属性中的XML片段为终端系统造成了问题。所以有任何正则表达式可以解决我的问题吗?不,我们没有。选项来解析xml..但我很确定通过正则表达式可以做到这一点
str1.replaceAll("Answer=.*?<([^<]*)>", "$1");
str1.replaceAll("<([^<]*?)>", "$1")
String input = "<user_input><UserInput Question=\"test Q?\" Answer=<value>0</value><sam@testmail.com>\"\n</user_input>";
String st = input.replace("><", " ").replaceAll("(?<=Answer=.{0,1000})[<>/]+(?=[^\"]*\")", "");
String st1 = input.replaceAll("(?<=Answer=.{0,1000})><(?=[^\"]*\")", " ").replaceAll("(?<=Answer=.{0,1000})[<>/]+(?=[^\"]*\")", "");
System.out.println(st + "\n" + st1);
<user_input UserInput Question="test Q?" Answer=value0value sam@testmail.com"
</user_input>
<user_input><UserInput Question="test Q?" Answer=value0value sam@testmail.com"
</user_input>