【问题标题】:need to find the attribute name in the string需要在字符串中找到属性名
【发布时间】:2017-09-07 09:46:17
【问题描述】:

我正在尝试在 Java 中捕获该行中的最后一个属性。请调整以下代码并帮助我找到“battr”。例如,我将属性命名为“attr”和“battr”,但它可以是任何东西。

System.out.println("<tag attr=\"val1\" battr=\"val2\"></tag>".replaceAll(".*([a-z]+\\s*=).*","$1"));

【问题讨论】:

    标签: java regex replaceall


    【解决方案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());
    

    欲了解更多信息:Lookahead and Lookbehind Zero-Width Assertions

    【讨论】:

    • 非常感谢。你能否也调整一下同样适用于下面的字符串。 attr=\"val1\" battr=\"val2\">
    • 您尝试过解决方案吗?它已经适用于您提到的字符串。只需将此.replaceAll(".*(\\s([a-z])+\\s*=).*", "$1").replace("=", "").trim() 添加到字符串的末尾即可。
    • 是的,正则表达式工作正常。但如果该行不以字符串 ""
    • 好的。但"battr=\"val2\"&gt;&lt;/tag&gt;" 不是有效的属性字符串。
    • 我将添加更多详细信息... 1. 最后一个属性可以以
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2017-02-06
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2021-06-18
    相关资源
    最近更新 更多