私は入力の間に内容を取ろうとしています。私のパターンは正しいことをしていません。以下 正規表現のJava
はsudocodeです:s="Input one Input Two Input Three";
Pattern pat = Pattern.compile("Input(.*?)");
Matcher m = pat.matcher(s);
if m.matches():
print m.group(..)
必要な出力:
二
三
私は入力の間に内容を取ろうとしています。私のパターンは正しいことをしていません。以下 正規表現のJava
はsudocodeです:s="Input one Input Two Input Three";
Pattern pat = Pattern.compile("Input(.*?)");
Matcher m = pat.matcher(s);
if m.matches():
print m.group(..)
必要な出力:
二
三
使用Input
およびを使用するための先読み代わりにmatches
のループで、:
Pattern pattern = Pattern.compile("Input(.*?)(?=Input|$)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
それがオンラインで作業を参照してください:ideone
しかし、それは、ここでの分割を使用することをお勧めします:
String[] result = s.split("Input");
// You need to ignore the first element in result, because it is empty.
は、それがオンラインで作業を参照してください:ideone
私は分割ソリューションが好きですが、スペースを追加するので、s.split( "Input")です。 – phatfingers
ほぼ。 s.split( "?Input")を使用すると、各単語の後のスペースもキャッチします。 – phatfingers
これは動作しません。m.matchesは、文字列全体が式と一致する場合にのみtrueになります。次の2つの方法を行くことができる:
挨拶、 ヨースト
import java.util.regex.*;
public class Regex {
public static void main(String[] args) {
String s="Input one Input Two Input Three";
Pattern pat = Pattern.compile("(Input) (\\w+)");
Matcher m = pat.matcher(s);
while(m.find()) {
System.out.println(m.group(2));
}
}
}
どのようにそれが正しいことを行うために失敗していますか?何を手に入れていますか? – zigdon
"Input"の間の部分は常にシングルワードになりますか? –