1

私がする必要があるのは、文字列をチェックすることです。これは私がこれまでに持っているものです

System.out.print("Please enter a string of 1's and 0s :");
numLine = input.next();

if (numLine.matches("^101$")) {
    System.out.print("A is true");
} else if (numLine.matches("^\\d[01]+101$ ")){
    System.out.print("B is true");
} else {
    System.out.println("no");  
}

コードの最初の部分 ^101$ が機能し、A is true for B が出力されます。私がやろうとしているのは、1 と 0 のみを受け入れ、101 で終わる場合に返すことです。C に最初に 101 を実行させたいと思います。 111000101000 などであっても、1 と 0 をいくつでも受け入れ、101 を実行する D をどこでも受け入れます。

私にとってキラーは ("^101$") 構文であり、それについてはヘルプを使用できます

4

3 に答える 3

2

^and $withは必要ありませんmatches(コメントで述べたように)。これが私がそれを見る方法です:

B: "[01]+101"
C: "101[01]+"
D: "[01]*101[01]*"


は1 回以上を意味し、それは 0 回以上を意味するX+ことを思い出してください。X X*X

また、( A の場合) のみを「一致」させたい場合は、単に代わりに"101"を使用することを検討することをお勧めします。equalsnumLine.equals("101")

于 2012-12-06T02:34:39.607 に答える
1

必要な 4 つの正規表現は非常に似ています。

あなたが見つけたように、正確に「101」(A)と一致させるには、(コメントで述べたように、 and101を使用する必要はありません.^$

"101" (B) で終わるものと一致させるには、 を使用します[01]*101

"101" (C) で始まるものと一致させるには、 を使用します101[01]*

"101" (D) を含むものと一致させるには、 を使用します[01]*101[01]*

すべての場合において、[01]*はセット {0,1} 内の任意の文字の 0 個以上のインスタンスを意味するため、これらのそれぞれは、および101のみで該当する場合に入力された文字列の残りを検索します。01

于 2012-12-06T02:34:47.840 に答える
0

あなたが何をしたいのか正確にはわかりませんが、あなたが正規表現を何のために望んでいるのか理解したので、それを投稿します。

A-文字列全体として^101$一致します。101

B-文字列の先頭で^101一致します。after、include 、 afterを101追加します。[10]*01^101[10]*

C-文字列の最後に101$一致します。101最初に追加[10]*^して、先行0とを含めます1[10]*101$

D-どこにでも101一致し101ます。

于 2012-12-06T02:40:11.170 に答える