0

「this」という名前の HTML ページから値を取得しようとしています。例:

name="this" value="XXXX-XXX-xxxxx-xxxxx"

使ってみた

Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
        if(match.matches())
            return match.group();

しかし、何も返されませんでした。私は何をすべきか?

4

2 に答える 2

1

Joopが言ったように; 「検索」を使用します。

Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
if(match.find())
    return match.group(1);

また、group() だけでパターン マッチ全体が返されるため、"group(1)" を取得する必要があることに注意してください。

于 2012-07-01T17:36:18.060 に答える
0

次のような条件をもっと検討する必要があると思います

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));
    }

同時に上からのチップも必要!

于 2012-07-02T11:44:10.373 に答える