2011-08-02 19 views
8

文字列に含まれるすべての文字列に一致する正規表現を書く必要があります。例えば、この文字列を取る:Regex - 完全な文字列を一致させない限り

http://12.34.567.890/sqlbuddy 

にすべてを一致する式は次のとおりです。

^.*$ 

...それが含まれている場合、それはは全く文字列に一致しないように修正される必要があります"sqlbuddy"という単語です。私は、否定的な先読みがそれをするだろうと思ったが、それは私のために働いていない。

例えば、私は動作しません。これは、これを試してみました:

^(?!sqlbuddy).*$ 

どのように私はこれを変更する必要がありますか?

答えて

5

例では動作しません。あなたが本当に自分の文字列が与えられた単語が含まれているかどうかを確認したい場合は

^(?!.*sqlbuddy.*).*$ 

しかし、多分"http://12.34.567.890/sqlbuddy".contains("sqlbuddy")は十分でしょう。sqlbuddyは、文字列のどこにでも現れることができるようにするには、次のようにそれを変更する必要があります。また

+0

ありがとうございます。私はmod_rewriteでそれを使用していますので、.contains()を使用することはできませんが、それはうまく動作します。しかし、何らかの理由で、正規表現テスターを使ってhttp://gskinner.com/RegExr/ – Allen

+0

@Allenとルブラーをチェックしています。これはRegexのテストに使用するものです。本当に好きです。 –

+0

+1ですが、マイナーチェイク: 'sqlbuddy'の後に'。* 'は必要ありません。これは十分です: '(?m)^(?!?* sqlbuddy)。* $'または '(?m)^(?!。* sqlbuddy)。* $' 。 – zx81

2

また、これは私のために働いた:文字列 'sqlbuddy'の位置は関係ありません。それはsqlbuddyは、文字列の先頭にあると仮定しているため

^((?!sqlbuddy).)*$

+0

http://rubular.com/r/9MD67F0VtSこちらをご覧ください。 –

0

...あなただけの[長い]の文字列(複数の一致と長いテキスト)の特定の場所で検索したい場合は、あなたが使用することができ、(他の人のために):

first_part_of_string(?!.*sqlbuddy.*)second_part_of_string 

かより受け入れ:

first_part_of_string.*(?!.*sqlbuddy.*).*second_part_of_string 
関連する問題