正規表現言語を理解しようとしていますが、とても難しいです。
いくつかのチュートリアルを読みましたが、よくわかりません。
私はこの正規表現を得ました、
N\b*:\b*[^:]*
この正規表現の意味を教えてください。
どうもありがとうございました !
正規表現言語を理解しようとしていますが、とても難しいです。
いくつかのチュートリアルを読みましたが、よくわかりません。
私はこの正規表現を得ました、
N\b*:\b*[^:]*
この正規表現の意味を教えてください。
どうもありがとうございました !
正規表現をそのコンポーネントに分解すると、次のようになります。
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 番目:
は使用できません。この単語全体の境界ビジネスはあまり直感的ではなく、コンテキストがないとここで何を意味するのか明確ではありません。の周りの単語境界を一致さ:
せることはあまり意味がありません。しかし、少なくとも、正規表現をよりよく理解できるはずです。
debuggex.comを使用することをお勧めします
N\b*:\b*[^:]*
どこ
N
、:
リテラルです\b
単語の開始/終了を表しますヒント: 基本に少し慣れてきたら、次のように言います。
ゲームをしましょう:
左手の指を黒い点に置き、右手の指を照合する文字列の最初の文字に置き、左指で白い点に到達しようとします。
ルールは次のとおりです。