-5

正規表現言語を理解しようとしていますが、とても難しいです。

いくつかのチュートリアルを読みましたが、よくわかりません。

私はこの正規表現を得ました、

N\b*:\b*[^:]*

この正規表現の意味を教えてください。

どうもありがとうございました !

4

3 に答える 3

2

正規表現をそのコンポーネントに分解すると、次のようになります。

  • N
  • \b*
  • :
  • \b*
  • [^:]*

Nそして:単なるリテラルです。それらについては何も言うことはありません。

\b単語境界疑似クラスです。文字列の先頭、末尾、または単語境界のいずれかに一致します。単語境界は、単語の先頭または末尾です。これは、どの文字とも一致 (「消費」) しないため、少し奇妙です。文字列「foo bar」には、4 つの単語境界があります (f の前、o の後、b の前、r の後)。

A*は、前の一致を任意の回数 (0、1、2、またはそれ以上) 繰り返すことができることを意味します。これは、任意の数の連続する単語境界を受け入れることを意味します。

最後に括弧[ ]でクラスを定義します。このクラスの中に があり^:ます。^「逆」という意味です。たとえば、クラスがある場合[a]、文字に一致しますa。ただし、[^a]を除くすべてに一致しますa。したがって、クラス[^:]は を除くすべてに一致します:。最後に、*このクラスは何度でも一致させることができるという意味があります。

したがって、すべてをまとめると、正規表現の意味は次のようになります。

  • 文字を合わせるN
  • 任意の数の単語境界に一致
  • キャラを合わせる:
  • 任意の数の単語境界に一致
  • を除く任意の数の文字に一致します:

以下にいくつかの例を示します。

  • N:- 一致、最も単純な一致です
  • N- 一致しません、ありません:
  • N:foobar- マッチ
  • N:foobar:baz- 一致しません。2 番目:は使用できません。

この単語全体の境界ビジネスはあまり直感的ではなく、コンテキストがないとここで何を意味するのか明確ではありません。の周りの単語境界を一致さ:せることはあまり意味がありません。しかし、少なくとも、正規表現をよりよく理解できるはずです。

于 2013-07-10T09:43:58.440 に答える
1

debuggex.comを使用することをお勧めします

N\b*:\b*[^:]*

正規表現イメージ

どこ

  • N:リテラルです
  • \b単語の開始/終了を表します

Debuggex でライブ編集

ヒント: 基本に少し慣れてきたら、次のように言います。

ゲームをしましょう:

左手の指を黒い点に置き、右手の指を照合する文字列の最初の文字に置き、左指で白い点に到達しようとします。

ルールは次のとおりです。

  • あなたが現在いる文字がそれに一致する場合にのみ、長方形を通過できます
  • 長方形を通過したら、右手の指を 1 文字進める必要があります。
  • あなたは後ろに行くことは許されていません(どちらの手も)
    • 例外はループです (黒と白のドットを結ぶ線の下のもの)
  • 白い点に到達した場合は一致しています
于 2013-07-10T10:09:35.637 に答える