0

正規表現を理解しようとしています:

(0+1)*1(0+1)*

このパターンに一致する例を教えてください。

0+1 は結合を意味します。論理和のようですね。0 と 1 のどちらを選択する必要がありますか?

01 は連結を意味します。論理積のようですね。01 桁を一緒に使用する必要がありますか?

(0+1)* は反復を意味します。0 回または 1 回 n 回反復できますか? 000011110000 は(0+1)* パターンに一致しますか?

4

4 に答える 4

6

これが正規表現として解釈される場合、次を含む式に一致します。

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 と評価されます。

于 2012-10-15T10:14:21.490 に答える
3
(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)*

変数としてではなく、文字通りに理解される文字で。

于 2012-10-15T10:15:29.660 に答える
2

これがの出力です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
----------------------------------------------------------------------
于 2012-10-15T11:04:29.087 に答える
1

基本的(0+1)*に、1 と 0 の任意のシーケンスを計算します。したがって、あなたの例(0+1)*1(0+1)*では、1を持つ任意のシーケンスと一致する必要があります。一致しませんが、、、など 000と一致します。0または1 を意味します。1の任意の数を意味します。 orは、1 が 1 回以上出現することを意味します。0101111(0+1)1*11*1+

于 2012-10-15T10:14:30.760 に答える