特定のタグで囲まれた文字列からすべての部分文字列を抽出します。私は「*」タグにいくつかのサブ文字列を囲む入力文字列を持っている場合たとえば、:Java RegEx:文字列から複数の部分文字列を抽出する
I contain two terms to extract: *first term* and *second term*
は、私は何を取得したいことは二つのサブ文字列を「第一項」と、「第二項」です。 私は次のコードで試してみました:
List<String> matches = new ArrayList<>();
Matcher m = Pattern.compile(".*\\*(.*)\\*.*").matcher(inputString);
while(m.find()){
matches.add(m.group(1));
}
しかし、これは私に間違った結果が得られます。私はgroup
メソッドに関するAPIドキュメントを読んでいますが、正直言って私はそれが何を意味し、どのように機能するのかはよく分かりません。もし誰かが、ここですべての必要なサブストリングを集めることが最善の方法であると教えてくれたら、感謝しています。
ありがとうございます!
'\\ *(。*?)\\ *'を使用します。つまり貪欲ではありません。 – Tunaki
「貪欲」とはどういう意味ですか?ありがとう – user3237736
"欲張り"は、一致を得る方法が複数ある場合、最大の文字数の一致を選択することを意味します。あなたの正規表現が 'a。* b'であり、入力文字列が' a1111b ... a2222b'であれば '。*'に対して可能な最大一致を選ぶので、これは文字列全体と一致します。疑問符「a。*?b」を追加することで、最小の文字数で一致するものを選択するよう指示します。これは 'a1111b'にマッチします。 – ajb