Java 我的正则表达式在尝试提取HTML属性时失败

Java 我的正则表达式在尝试提取HTML属性时失败,java,regex,Java,Regex,我试图从一个名为“this”的HTML页面中获取一个值 例: 我试着用 Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\""); Matcher match = pat.matcher(sb); if(match.matches()) return match.group(); 但是什么也没有回来。我该怎么办?就像乔普说的那样;使用“查找”: 也注意到你要检索“GROUP(1)”,因为

我试图从一个名为“this”的HTML页面中获取一个值 例:

我试着用

Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
        if(match.matches())
            return match.group();
但是什么也没有回来。我该怎么办?

就像乔普说的那样;使用“查找”:


也注意到你要检索“GROUP(1)”,因为GROUP()返回了整个模式匹配。

< P>我认为你应该考虑更多的条件,比如

name = "this" id = "something" value = 'xxx'
那么您的模式就不能满足诸如“name”和“=”‘xxx’之间的空格以及属性“name”和属性“value”之间的字符串等要求,所以我认为模式应该如下所示:

private final String matchString = "name\\s*=\\s*(?:\"this\")|(?:'this')" +
                                    ".*?" +
                                    "value\\s*=\\s*" +
                                    "(?:\"([^\"]*)\") |(?: '([^']*)')";
private final Pattern pattern = Pattern.compile(matchString,Pattern.DOTALL|Pattern.COMMENTS); 
Matcher matcher = pattern.matcher(content);

    while(matcher.find())
    {
        System.out.println(matcher.group(1));
    }

同时,需要从地板上取小费

find
匹配((?s)^.*name=\“this\”value=\“(.*?\”*$”)其中
(?s)
(DOTALL)接受点(.)的换行符。matches()用于匹配整个文本。
name = "this" id = "something" value = 'xxx'
private final String matchString = "name\\s*=\\s*(?:\"this\")|(?:'this')" +
                                    ".*?" +
                                    "value\\s*=\\s*" +
                                    "(?:\"([^\"]*)\") |(?: '([^']*)')";
private final Pattern pattern = Pattern.compile(matchString,Pattern.DOTALL|Pattern.COMMENTS); 
Matcher matcher = pattern.matcher(content);

    while(matcher.find())
    {
        System.out.println(matcher.group(1));
    }