私はこれは私がこれまで持っているものである私の正規表現が?ver
と?v
を一致させたいが、ない?version
正規表現マッチ正確な言葉
:$parts = preg_split("(\b\?ver\b|\b\?v\b)", $src);
私はトラブルは、私が?
を逃れる方法かもしれないと思います。
私はこれは私がこれまで持っているものである私の正規表現が?ver
と?v
を一致させたいが、ない?version
正規表現マッチ正確な言葉
:$parts = preg_split("(\b\?ver\b|\b\?v\b)", $src);
私はトラブルは、私が?
を逃れる方法かもしれないと思います。
あなたのパターンは、単語charの前にある?
と一致するように試みます。パターンがないので、一致しません。
は、次のパターンを使用します。
\?
- リテラル文字?
v(?:er)?
から: '/\?v(?:er)?\b/'
パターンがの詳細を参照してください。またはver
\b
- 単語境界(つまり、 v
またはver
の後には、数字以外の文字(数字、文字または_
でない)または文字列の末尾が必要です。それは?
(非単語文字)とv
(ワード文字)の間に、すでに存在しているとして、あなたが最初の(初期)ワード境界を必要としない注意。 ?
がオプションの場合は、そこに単語境界が必要です。
次の正規表現パターンを試してください。
(\?v(?:\b|(?:er(?!sion))))
これは?ver
と?v
を許可しますが、?ver
があなたのケース?version
のように、sion
が続いている場合は、一致防ぐために、負の先読みを使用します。
対象となる部分文字列が行末で終了することをどのように知っていますか?あなたのパターンは実際には間違っているかもしれませんが、OPがいくつかのサンプル文字列を提供するまではわかりません。これはWiktorの正しいパターンには関係ありません。 – mickmackusa
OPはサンプルの文字列を提供しました。「正規表現で '?ver'と'?v'をマッチさせますが、 '?version'ではマッチさせません。 –
しかし、OPが意味するものであり、それが非常にうまく表現されていないという偶然の可能性については、元の解決策を無償で提供しているので、今私の答えを編集しました。それを指摘してくれてありがとう! :) –
2人または3人のサンプル入力を追加して、今後のSOリーダーがあなたの文脈で尋ねる内容を確認できるようにしてください。 – mickmackusa
「厳密な単語」と呼ばれるものは、特に「?」は単語文字ではないため、あまり明確ではありません。単語の正確な範囲を説明する必要があります。 –
@mickmackusa:それは問題ではありません、それはいつも不明です(幸いにも!)。 –