私は"<name><address> and <Phone_1>"
のような文字列を持っています。私は正規表現一致で "<"を除外する方法
1) <name>
2) <address>
3) <Phone_1>
のように、私は正規表現使用して試してみました結果を得るために取得「<を(。*)>」を持っているが、それはただ一つの結果を返します。
私は"<name><address> and <Phone_1>"
のような文字列を持っています。私は正規表現一致で "<"を除外する方法
1) <name>
2) <address>
3) <Phone_1>
のように、私は正規表現使用して試してみました結果を得るために取得「<を(。*)>」を持っているが、それはただ一つの結果を返します。
したい正規表現は、あなたが3つのキャプチャグループにしたいものを吐き出すます
<([^<>]+?)><([^<>]+?)> and <([^<>]+?)>
です。
Matcher m = Pattern.compile("<([^<>]+?)><([^<>]+?)> and <([^<>]+?)>").matcher(string);
if (m.find()) {
String name = m.group(1);
String address = m.group(2);
String phone = m.group(3);
}
正規表現でパターン.*
が貪欲です:完全なコードは次のようになります。見つかった最初の<
とできるだけ多くの文字が一致し、最後に可能な文字は>
と一致します。あなたの文字列の場合は、最初に<
が見つかり、できるだけ多くのテキストを>
まで探します。これは文字列の最後にあります。
欲求がないまたは「怠惰な」パターンは、可能な限り少数の文字と一致します。単に<(.+?)>
。疑問符は非欲張りの構文です。 this questionも参照してください。
これは、動的なグループ数がある場合に機能します。
Pattern p = Pattern.compile("(<\\w+>)");
Matcher m = p.matcher("<name><address> and <Phone_1>");
while (m.find()) {
System.out.println(m.group());
}
どのような言語ですか...? –
こんにちは@Andy ..それはJavaにあります – DevX