2011-09-16 8 views
0

誰かがregexメタ文字を含む文字列からテキストを削除するPHP正規表現を使用する方法を知っていますか?例えばメタ文字を含むフレーズにregexをPHPで使用するには?

-

テキスト文字列の前に -

"Look at the shiny apple [word]" //where 'word' could be anything 

テキスト文字列の後に -

"look at the shiny apple" 
+0

メタ文字を含む特定の文字列(これはすでに回答済み)またはメタ文字を含む文字列を置き換えることを検討していますか?そして、あなたは '[] [^ $。\ * +?()]'のように列挙しなければなりません(これは不完全な文字クラスかもしれません。 – tripleee

答えて

1

preg_replaceを使用して正規表現で何かを置き換えます。

特殊文字を文字通り一致させたい場合は、\[のようなバックスラッシュを使用して正規表現の文字をエスケープする必要があります( "[")と一致させる場合)。

1
preg_replace('/Look at the shiny apple \[\w+\]/gi','Look at the shiny apple', $subject); 

は、トリックを行う必要があります。

+0

1清潔で簡単な、ga – chown

+1

これは大括弧で囲んだ単語だけでなく、文全体を置き換えます。 – stema

+0

おっと!必要な方法でコードを更新してください。 – Jesse

0

あなたの正規表現は次のようになります:

"(?<=Look at the shiny apple)\S*" 

それが試合前に存在しなければならないと言い、肯定後読みですが、試合でそれを含まない(< =?)が。

これは、テストのための優れたツールであり、正規表現を考え出す:http://www.gskinner.com/RegExr/

編集:後にスペースを入れず、後述のように*それはデータの残りの部分にマッチする、\ Sを使用することもできます。ありがとうJesse

+0

まあ、 "光るリンゴを見て"、すべてのキャラクターを捕まえたいのであれば、それはうまくいくだろうが、これは少なくとも "(?<光沢のあるリンゴ\ s *を見て)\ S * 'であるため、残りの文字列の内容はすべて取得されません。 – Jesse

+0

私は実際に言及することを忘れていました。。*の後ろにスペースがありますが、ここではあまり見えません。申し訳ありません、はい\ Sも同様に動作します。 – Howard

+0

また別のきちんとしたツール:http://regexpal.com – Jesse

関連する問題