私はこの長い間、この正規表現を取得しようとしています。次の文字列では、.com/<first_word>
の後に続くすべてのスラッシュに一致することはありません。ただし、 の後には、URLがになります。Positive Lookbehindの後に特定の文字のすべてを一致させる
$string = "http://example.com/foo/12/jacket Input/Output";
match------------------------^--^
スラッシュ間の単語の長さは関係ありません。
正規表現:(?<=.com\/\w)(\/)
結果:
$string = "http://example.com/foo/12/jacket Input/Output"; // no match
$string = "http://example.com/f/12/jacket Input/Output";
matches--------------------^
正規表現:(?<=\/\w)(\/)
結果:
$string = "http://example.com/foo/20/jacket Input/O/utput"; // misses the /'s in the URL
matches----------------------------------------^
$string = "http://example.com/f/2/jacket Input/O/utput"; // don't want the match between Input/Output
matches--------------------^-^--------------^
後読みは何の修飾子を持っていないと私はちょうど持っている場合、私は疑問に思って長さゼロの表明である必要がありますすることができますので間違った経路をたどり、別の正規表現の組み合わせを探すべきです。
これを行うには、肯定的な視点が正しい方法ですか?それとも、私はコーヒーが大量ではないものを逃していますか?
NOTEは:正規表現がpreg_*
機能のいずれかので動作するはずですのでPHPでタグ付けされました。
The'preg_match'関数は、1個の一致を返します。あなたは、あるパターンの後にあるすべての文字に一致する必要があると言います。 'preg_match_all'を使うべきです。 –
私はまだそれがXYの問題であるという印象を持っています。あなたは何を達成しようとしていますか?なぜそれらのスラッシュにマッチするのですか? URLをurl_parseしてから、何でもしてください。分解する。 –
正規表現は 'preg_ *'関数の* any *で動作するはずなので、XY問題ではありません@WiktorStribiżew。 –