2011-12-06 10 views
0

こんにちは@FailedDevにすべてPHPの正規表現の改善2.0

おかげで私は現在、一言ボックス用するpreg_match内で使用されているの下に正規表現を持っています。私がこの問題で達成しようとしているのは、正規表現が大文字と小文字を区別しないようにすることと、この場合はfredという 'キーワード'にスペースを使用できるようにすることです。背景情報については

/(?<=^|\s)(?:\bfred\b|\$[$\w]*fred\b)/x


参照リンクを参照してください。

Reference


この上の任意の助けてくれてありがとう。


更新:いくつかの有用な情報のおかげで、私はそれが最も効率的な解決策ではないと感じても、私は必要なものを行い、次の正規表現が出ています。

~(?:(?<=\s|^)[$\S]*|\b)f+(?:\.+|\s+)?r+(?:\.+|\s+)?e+(?:\.+|\s+)?d+(?:\.+|)?\b~i

答えて

3

あなたはそれが大文字と小文字を区別しないようにしたい場合は、/i modifierを使用しています。

余分な空白を許可するには、空白文字の可変数には\s*を、optionalスペースには[ ]?を使用します。

チュートリアルについてはpreg_matchおよびPCRE syntax overviewおよびhttp://regular-expressions.info/のマニュアルも参照してください。正規表現の作成に役立つツールのリストについては、参考文献のIs there anything like RegexBuddy in the open source world?も参照してください。そしてsome useful online tools

+0

+1あなたは正規表現の男です! –

+1

ナー、そうではありません。ここにはもっと有能な人がいます。私はハイパーリンクが好きです。 – mario

+0

ご返信ありがとうございます。あなたが提供した情報から、私はそれが最も効率的な解決策ではないと感じていますが、以下のことを考え出しました。それはうまくいく解決策です: '〜(?:(?<= \ s | ^)[$ \ S ] +(ψ:\。+ | \ s +)?d +(?:\。 )?\ b〜i ' – Matthew