これは簡単な質問のように見えるだろうが、私は(私が思う)貪欲に苦しんでいる、と私は明白な例を見つけることができません。次の文字列が与えられシンプルPCRE正規表現
:
text/html; text/xml; text/json
「最初のサブタイプ」(上記の例では「html」)を取得するにはどうすればよいですか?
は、私はこのような組み合わせのすべての種類を試してみた:
(.*)\/(.*)[ |;]
及び第二の変数を取得しようとしています。
Iは、(それらの間の可能な空白で)文字列は常にフォーム
aaa/bbb
における少なくとも1つの文字列を持ち、それはそれであってもよいか、あるいはそれはセミコロンが続いてもよいことを知っていますより多くのデータ(私は無視することができます - 私は最初のサブタイプが必要です)。だから、可能なオプションは、このようなことができます:
text/html
text/html; text/xml
text/html ; text/xml ; application/json
私はそれが最初のスラッシュを探して、その後、空白またはセミコロンかのどちらかの端に、その後のすべてを取ってと同じくらい簡単だった期待していた
文字列(これは私の正規表現がやっていると思っていたものですが)でも、正規表現では十分に熟練していません。
明確にするためそれは/が物事を妨げる場合に役立ちます、これは、PCRE互換の正規表現にする必要がある...
'\/[;]' - 怠惰なマッチングを使用します(*。?)(*。?)。または、 '[^ \ /] + \ /(\ S +)'(どちらも 'preg_match'をPHP用に使用しています) –