2

StringJavaで正規表現を使用してaを解析する簡単な解決策はありますか?

HTMLページを適応させる必要があります。したがって、いくつかの文字列を解析する必要があります。

href="/browse/PJBUGS-911"
=>
href="PJBUGS-911.html"

文字列のパターンは、ID に対応するだけ異なります (例: 911)。私の最初のアイデアは次のようになります。

String input = "";
String output = input.replaceAll("href=\"/browse/PJBUGS\\-[0-9]*\"", "href=\"PJBUGS-???.html\"");

ID以外は全て差し替えたいです。これどうやってするの?

誰かが私を助けることができればいいですね:)

4

3 に答える 3

3

括弧を使用して、パターンに一致した部分文字列をキャプチャできます。そして、取り込んだものを$nwhere nis の代わりに使用できます 括弧のセットの数 (開き括弧を左から右に数えます)。あなたの例:

String output = input.replaceAll("href=\"/browse/PJBUGS-([0-9]*)\"", "href=\"PJBUGS-$1.html\"");

または、必要に応じて:

String output = input.replaceAll("href=\"/browse/(PJBUGS-[0-9]*)\"", "href=\"$1.html\"");
于 2012-12-03T19:02:54.970 に答える
1

これは正規表現を使用しません。しかし、それでも問題が解決する場合があります。

output = "href=\"" + input.substring(input.lastIndexOf("/")) + ".html\"";
于 2012-12-03T19:05:09.993 に答える
0

これは私がそれを行う方法です:

public static void main(String[] args) 
    {
        String text = "href=\"/browse/PJBUGS-911\" blahblah href=\"/browse/PJBUGS-111\" " +
                "blahblah href=\"/browse/PJBUGS-34234\"";

        Pattern ptrn = Pattern.compile("href=\"/browse/(PJBUGS-[0-9]+?)\"");

        Matcher mtchr = ptrn.matcher(text);

        while(mtchr.find())
        {
            String match = mtchr.group(0);
            String insMatch = mtchr.group(1);



            String repl = match.replaceFirst(match, "href=\"" + insMatch + ".html\"");

            System.out.println("orig = <" + match + "> repl = <" + repl + ">");
        }
    }

これは、次を使用して取得できる最終的なフォーマットされたテキストではなく、正規表現と置換を示しているだけですMatcher.replaceAll

String allRepl = mtchr.replaceAll("href=\"$1.html\"");

すべてを置き換えるだけの場合は、ループは必要ありません。正規表現がどのように機能するかをデバッグ/表示するためだけに使用しました。

于 2012-12-03T19:23:18.367 に答える