長さがゼロ以上のすべてのバイナリ文字列に一致するように正規表現を書きたいと思います。要件は、奇数の位置は 1 でなければならず、偶数の位置は 1 または 0 のいずれかである必要があるということです。
正規表現で位置を制御する方法がわかりませんか?
私の考えは次のようなものです([1]+[01]*)+
サンプル:
10101
11111
その量指定子を内部から削除する必要があります。また、長さ 0 の文字列に一致させたいため、*
完全な正規表現で quantifierを使用する必要があります+
。
次の正規表現を使用してみてください。
(1[01]?)*
これは一致します:
[01]
奇数長の文字列に一致するオプションです。これを使ってみてください:
String data = "10111";
Pattern pattern = Pattern.compile("(1[01]?)*");
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
// Indicates match is found. Do further processing
System.out.println(matcher.group());
}