実験については、乱数を使用しているので、出力される個数にはばらつきが ある。 大きく違わない限りは、正答である。
部分的にマッチするのを期待して書く方 法と、その他の文字を明示的に書く方法がある。
String input="-10+30-20";
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ex252 {
public static void main(String[] args) {
Pattern p = Pattern.compile( "(\\+|-)?(0|[1-9][0-9]*)");
String input="-10+30-20";
Matcher m = p.matcher(input);
while(m.find()) {
System.out.println(m.group());
}
}
}
文字列中の正規表現のエスケープのためのバックスラッシュに関しては、 更にバックスラッシュを重ねてエスケープする必要がある。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ex253 {
public static void main(String[] args) {
Pattern p = Pattern.compile( "(\\+|-)?(0|[1-9][0-9]*)");
String input="-10+30-20";
Matcher m = p.matcher(input);
int n=0;
while(m.find()) {
n++;
}
System.out.println(n);
}
}