私は非常に複雑な正規表現を書いていて、Rubular editorを使ってテストしましたが、数時間後にはPHPで動作しないことに気付きました。正当な正規表現はphp((\\ | \ |)| [^ \ |]))*で動作しません。
これは長い正規表現パターンのほんの一部です:
((\\\\|\\\|)|[^\\\|])*?
私は、以下の条件の下で、文字列をMACHする必要があります。
- 文字列には
|
文字だけが\|
にエスケープされている場合があります。 - 文字列に
\
の文字が含まれている場合は、\\
としてエスケープされます。 - 文字列が空である可能性があります。
これはまた、Rubularは[^\\\|]
とを受け入れ
test
test\\
test\|
t\\e\|s\|\|t\\\\\\\\\\
のような文字列がCORRECTあり、そして
test\
test|\
\
|
test\\\\|
のような文字列が
CORRECT されていないことを意味し(同じ)。 PHPは[^\|\\]
で動作しません。どうして?
ここには何も表示されていませんが、私は両方の文字が正しくエスケープされていると思いますが、PHPは私に同意しないと思うからです。
私は、この正規表現のことで、まだ新しいですので、私の愚かさを非難しないでください。
ありがとうございます!
生の文字列を使用するように思えます。 'var_export($ yourRegexString、true);を渡していますか? – dangerChihuahua007