0
我试图捕获Java中行中的最后一个属性。请调整下面的代码,并帮助我找到“battr”。例如,我命名属性如“attr”和“battr”,但它可以是任何东西。需要在字符串中找到属性名称
System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*([a-z]+\\s*=).*","$1"));
我试图捕获Java中行中的最后一个属性。请调整下面的代码,并帮助我找到“battr”。例如,我命名属性如“attr”和“battr”,但它可以是任何东西。需要在字符串中找到属性名称
System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*([a-z]+\\s*=).*","$1"));
你可以试试这个:
System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*(\\s([a-z])+\\s*=).*", "$1")
.replace("=", "").trim());
编辑:
您可以使用正向前查找对你的要求:
System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*((\\s|^)([a-z])+(?==)).*", "$1").trim());
非常感谢。你能否也请调整相同的工作方式以适应下面的字符串。 attr = \“val1 \”battr = \“val2 \”> – javapsy
您是否尝试了解决方案?它已经在为你提到的字符串工作了。只需添加'.replaceAll(“。*(\\ s([az])+ \\ s * =)。*”,“$ 1”)。replace(“=”,“”).trim()'字符串的结尾。 –
是的正则表达式工作正常..但如果行不以字符串“<标记”开始并且只有一个属性不是以像“battr = \”val2 \“>” – javapsy