История изменений
Исправление asaw, (текущая версия) :
Проход там скорее всего вообще один, а работает примерно так:
import java.util.regex.*;
class HelloWorld {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("Z*");
Matcher matcher = pattern.matcher("bcZZdef");
boolean b;
while(b = matcher.find()) {
System.out.println(matcher.start() + ": \"" + matcher.group() + "\"");
}
System.out.println("bcZZdef".replaceAll("Z*", "!"));
}
}
0: ""
1: ""
2: "ZZ"
4: ""
5: ""
6: ""
7: ""
!b!c!!d!e!f!
То есть строка последовательно перебирается, а все найденные группы заменяются и формируется новая строка.
Исправление asaw, :
Проход там скорее всего вообще один, а работает примерно так:
import java.util.regex.*;
class HelloWorld {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("Z*");
Matcher matcher = pattern.matcher("bcZZdef");
boolean b;
while(b = matcher.find()) {
System.out.println(matcher.start() + ": \"" + matcher.group() + "\"");
}
System.out.println("bcZZdef".replaceAll("Z*", "!"));
}
}
0: ""
1: ""
2: "ZZ"
4: ""
5: ""
6: ""
7: ""
!b!c!!d!e!f!
То есть строка последовательно перебирается, а затем все найденные группы скопом заменяются и формируется новая строка.
Исходная версия asaw, :
Проход там скорее всего вообще один, а работает примерно так:
import java.util.regex.*;
class HelloWorld {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("Z*");
Matcher matcher = pattern.matcher("bcdef");
boolean b;
while(b = matcher.find()) {
System.out.println(matcher.start() + ": \"" + matcher.group() + "\"");
}
System.out.println("bcdef".replaceAll("Z*", "!"));
}
}
0: ""
1: ""
2: ""
3: ""
4: ""
5: ""
!b!c!d!e!f!
То есть строка последовательно перебирается, а затем все найденные группы скопом заменяются и формируется новая строка.