Java 正则表达式从html标记获取动态值

Java 正则表达式从html标记获取动态值,java,regex,Java,Regex,我有一个字符串格式的html标记。我需要从中获取一个动态值 输入字符串: 我可以在这里用适当的正则表达式来帮助你 String regex = "value=\\\"(.*?)\\\""; 您可以尝试转义反斜杠符号\和引号符号。尝试以下操作: import java.util.regex.*; public class RegexTest { public static void main(String args[]){ final String str = "&

我有一个字符串格式的html标记。我需要从中获取一个动态值

输入字符串:

我可以在这里用适当的正则表达式来帮助你

String regex = "value=\\\"(.*?)\\\"";
您可以尝试转义反斜杠符号\和引号符号。

尝试以下操作:

import java.util.regex.*;

public class RegexTest {

    public static void main(String args[]){

        final String str = "<input type=\"hidden\" name=\"OFBIZ_FRAMEWORK_REQUEST_SYNCH_TOKEN\" value=\"1590137573579\">\n";

        String regex = "value=\\\"(.*?)\\\"";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

您的正则表达式需要38个步骤来匹配值

如果该值始终为数字,则可以使用:

String regex = "value=\"(\d*)\"";
它需要12个步骤

如果值可以包含除双引号以外的任何字符,请使用:

String regex = "value=\"([^\"]*)\"";

它还需要12个步骤才能使事情变得简单。如果你试图解析一个html文件,那么请看下面的例子,我觉得答案完全是错误的。OP已经说过这对他有用了。如果需要更改任何内容,则应该在值周围设置单词边界,以确保它不会尝试匹配以值结尾的属性。否则,这个正则表达式就是一个非常简单的搜索,所建议的任何更改都不重要。
String regex = "value=\"(\d*)\"";
String regex = "value=\"([^\"]*)\"";