私が書いていないコードを更新していますが、その一部は次のような正規表現です:
[url(?:s*)]www.(.*?)[/url(?:s*)]
という事は承知しています 。*? 2番目のレジスタ内のすべての貪欲でない一致を行います。
1番目と3番目のレジスタの?:s *は何をしますか?
更新: 要求に応じて、言語は.NET 3.5のC#です。
回答:
回答№1については9構文 (?:)
部分式を括弧で囲む方法です なし 文字列のその部分を個別に抽出します。
著者は (.*?)
途中の部分であり、最初または最後のスペースが邪魔にならないようにしたかったのです。 1
または $1
(または適切な方法が特定の言語である場合)文字列の先頭にあるスペースの最初のチャンクの代わりにドメイン名を参照する
回答№2については4
?:括弧を非グループ化します。その正規表現では、「中間(。*?)式を含む1つの情報$ 1のみを引き出します。
答え№3の2
1番目と3番目のレジスタの?:s *は何をしますか?
ゼロ個以上の空白文字を、キャプチャせずに一致させます。
正規表現の作成者は、角括弧タグの末尾の空白を許可し、「www。」に続くすべてのDNSラベルと一致させる予定です。そのようです:
[url]www.foo.com[/url] # foo.com
[url ]www.foo.com[/url ] # same
[url ]www.foo.com[/url] # same
[url]www.foo.com[/url ] # same
正規表現も一致することに注意してください。
[url]www.[/url] # empty string!
一致しません
[url]stackoverflow.com[/url] # no match, bummer
回答№4の場合は1
この正規表現チートシートを見つけることができます非常に役に立ちます(うまくいけば)。私は何年もかけて、運良く正規表現を学ぼうとしました。そして、このチートシートを読むと、以前に学べなかったことをすぐに理解しました。
http://krijnhoetmer.nl/stuff/regex/cheat-sheet/