こんにちは私は、文字*
が前の文字と0回以上一致するために使用されていることを知っています。ここに問題があります。ここで、ゼロ時間とはどういう意味ですか。例:script[\s]*
これがどのように機能する場合、スクリプトのみをブロックするのか、それともスクリプトの後に空白をブロックするのか。
5 に答える
、、および修飾子は*
、それらの直前の式に適用されるため、この場合、アスタリスクは単独で適用されます。に適用したい場合は、式全体を括弧で囲むことができます。キャプチャ グループを作成したくない場合は、次のように を使用します。+
?
[\s]
script[\s]
(script[\s])*
(?:)
(?:script[\s])*
ここでゼロタイムとはどういう意味ですか?
他の場所を意味するのと同じです。
たとえば、「私はあなたを 0 回突いた」は、私があなたをまったく突かなかったことを意味します。
または、「私はあなたを 0 回以上突いた」は、私があなたを突かなかったこと、または私があなたを 1 回、または 2 回突いたことを意味します。
例: script[\s]* この場合、どのように動作するか、スクリプトのみをブロックするか、スクリプトの後に空白が続くブロックをブロックします。
正規表現はor orなどに一致 します。"script"
"script "
"script "
Regexr.comで実際の動作を確認してください。
いくつかのメモ:
\s
でラップする必要はありません[]
:script\s*
\s
空白を意味します。- regular-expressions.infoを読んでRegexBuddyを試すことをお勧めします。(または少なくともRegexr )
角括弧は文字クラスを\s
意味し、「空白文字」 (つまり、、など
\t
) を意味します。したがって、ここで*
は式に適用され[\s]
、正規表現全体は「一致のscript
後に 0 個以上の空白文字が続く」ことを意味します。
あなたが示した正規表現は次のように機能します。
1) 文字 'script' を文字通りに一致させます
2) 「空白文字」(スペース、改行など) である単一の文字に一致します。
2.1) できるだけ多く
したがって、単一の 'script' と 'script_ _ ' (任意の数のスペース)に一致します。