こんにちは私は、文字*が前の文字と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_ _ ' (任意の数のスペース)に一致します。