正規表現を理解しようとしています:
(0+1)*1(0+1)*
このパターンに一致する例を教えてください。
0+1 は結合を意味します。論理和のようですね。0 と 1 のどちらを選択する必要がありますか?
01 は連結を意味します。論理積のようですね。01 桁を一緒に使用する必要がありますか?
(0+1)* は反復を意味します。0 回または 1 回 n 回反復できますか? 000011110000 は(0+1)* パターンに一致しますか?
正規表現を理解しようとしています:
このパターンに一致する例を教えてください。
0+1 は結合を意味します。論理和のようですね。0 と 1 のどちらを選択する必要がありますか?
01 は連結を意味します。論理積のようですね。01 桁を一緒に使用する必要がありますか?
(0+1)* は反復を意味します。0 回または 1 回 n 回反復できますか? 000011110000 は(0+1)* パターンに一致しますか?
これが正規表現として解釈される場合、次を含む式に一致します。
zero or more sequences of
(one or more zeros followed by a single one),
followed by a single one,
followed by zero or more sequences of
(one or more zeros followed by a single one)
ブール代数式として、星を削除すると、次のように評価されます。
(false OR true) AND true AND (false OR true)
true と評価されます。
(0+1)*1(0+1)*
これが正規表現ならマッチする
0 の数字が 1 回以上連続し、その後に「1」の数字が 1 回続く
上記の組み合わせを 0 回以上繰り返し、その後に「1」の数字が続く
0 桁が 1 回以上続き、1 桁が 1 回続く
ラインの上に 0 回以上。
+
REGEX では、前の文字が「1 回以上」出現することを意味します
*
REGEX では、前の文字が「0 回以上」出現することを意味します
また、一般的なブラケット「()」は、拡張子をグループ化するために使用されます。
この場合の「0」と「1」は、数値としてではなく、文字通り文字として使用されます。
それがどのように機能するかを理解するには、次の正規表現を検討してください。
(a+b)*c(d+e)*
変数としてではなく、文字通りに理解される文字で。
これがの出力ですYAPE::Regex::Explain
:
The regular expression:
(?-imsx:(0+1)*1(0+1)*)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
( group and capture to \1 (0 or more times
(matching the most amount possible)):
----------------------------------------------------------------------
0+ '0' (1 or more times (matching the most
amount possible))
----------------------------------------------------------------------
1 '1'
----------------------------------------------------------------------
)* end of \1 (NOTE: because you are using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in \1)
----------------------------------------------------------------------
1 '1'
----------------------------------------------------------------------
( group and capture to \2 (0 or more times
(matching the most amount possible)):
----------------------------------------------------------------------
0+ '0' (1 or more times (matching the most
amount possible))
----------------------------------------------------------------------
1 '1'
----------------------------------------------------------------------
)* end of \2 (NOTE: because you are using a
quantifier on this capture, only the LAST
repetition of the captured pattern will be
stored in \2)
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
基本的(0+1)*
に、1 と 0 の任意のシーケンスを計算します。したがって、あなたの例(0+1)*1(0+1)*
では、1を持つ任意のシーケンスと一致する必要があります。一致しませんが、、、など
000
と一致します。0または1
を意味します。1の任意の数を意味します。
orは、1 が 1 回以上出現することを意味します。010
1
111
(0+1)
1*
11*
1+