public static void main(String[] args) {
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+\\D+\\d+").matcher("2abc3abc4abc5");
while (m.find()) {
allMatches.add(m.group());
}
String[] res = allMatches.toArray(new String[0]);
System.out.println(Arrays.toString(res));
}
結果は次のとおりです。
[2abc3, 4abc5]
私はそれが
[2abc3, 3abc4, 4abc5]
どのようにできるようにしたいと思いますそれは達成される? 「
(?=(\d+\D+\d+)).
説明、その後
技術は、先読みに一致するグループを使用することです 、そして:これはJavaで可能ですが、PCREで、あなたが次の操作を行うことができれば
すべてのインデックスから検索を開始する必要があります。 find(int startingIndex)メソッドを使用し、すべての文字位置から検索を開始します。 Matcher.find(String.indexOf(digits、index))の繰り返しを、すべての一致するインデックスについて組み合わせることを試みるかもしれません。 – user1676075
1桁の数字であれば、試合開始位置からバックアップして、そこから次の試合を見つけることができます。 – user1676075
入力「12abc13abc14abc15」に対して、「[12abc13,2abc13,13abc14,3abc14,14abc15,4abc15]」または「[12abc13,13abc14,14abc15]」を入力しますか? – johnchen902