私は (Java での) 正規表現の基礎を学ぼうとしており、練習するサンプル シナリオをいくつか想像しましたが、ご想像のとおり、最後の (したがって私にとって最も困難な) シナリオは機能しません。ここにあります:
<[a-zA-Z]>:[a-zA-Z]
私がしたいのは、 を認識することです<SOME TEXT>:SOME MORE TEXT
。次のような入力<foo>:bar
では: 、機能しません。
私は何を間違っていますか?
一致する文字は 1 つだけです。複数に一致させるには、「+」を追加する必要があります。
<[a-zA-Z]+>:[a-zA-Z]+
テキストがオプションの場合は、「0 個以上」を意味する「*」も指定できます。「+」は「1 つ以上」を意味します
「SOME TEXT」も文字通りキャッチしたい場合は、空白もキャッチする必要があります。
String teststring = "<SOME TEXT>:SOME MORE TEXT";
String regex = "<[\\sa-zA-Z]+>:[\\sa-zA-Z]+";
Matcher m = Pattern.compile(regex).matcher(teststring);
while (m.find())
{
System.out.println(teststring.substring(m.start(), m.end()));
}