2012-02-22 7 views
1

ちょっと、ちょっと私はこれを少し使ってきました。私はそれを得ることができない。ここで一致する二重記号

がこの試合にピリオドを除いてありませんが、私は

(@[^{2,}+)([^(\s\W\d{2}]+)(\b) 

http://rubular.com/r/zlx3j00Wjl

これまで持っているものです。

これは基本的に一致する必要があります。

function.name(パラメータ)

@私はちょうどfunction.nameと一致する必要があります。これはそうです。

http://rubular.com/r/hWMB72LsWT

私はこの

と一致する必要はありません@@ function.name(パラメータ)
こんにちは@@ test.com`

は知りませんでした誰かがアイデアを持っているならば。助けてくれてありがとう。

答えて

1

は私の行くがそれであるそれを参照してください。 ):

(?<[email protected])@(\w+(?:\.\w+)*)\([^)]*\) 

を説明:

(?<[email protected])@   # an '@' not preceded by an '@' 
(\w+(?:\.\w+)*) # any number of xxx.xxx.xxx, captured into a group 
\([^)]*\)  # brackets, containing anything that isn't a closing bracket 

これはRubyなので、かっこにマッチするかどうかは気にしないかもしれません。その場合は、最後のセクションだけを削除することができます。

+0

ありがとう、これは私をそこに連れて来た最終的なパターンでした。文字が前に来た場合、強調表示(これはテキストマートのためのものです)を防ぐために、これを(?<![\ w、@])@(\ w +(?:\。\ w +)*)どうもありがとう。 –

3

否定先読みを使用することができます。@([email protected])は、@と一致せず、別の@と一致します。

+0

あなたは実際に '@'の後ろのものにマッチしたいので、ネガティブなビヘイビッドを望むでしょう: – porges

+0

助けてくれてありがとう –

1

これを試してください:あなたが最初のグループにfunction.matchfunction.nameを持っています

(?:^|\s)@+([^(]+) 

[email protected]@test.comとは一致しません。 Rubular:

+0

ありがとうございました。 –

+0

確かに、助けてうれしい! –

1

この

(?!.*@@)^@([^()\s]+)\b 

はそれhere on Rubular

  • は私がルから数量詞を取り除い
  • あなたの表現から、いくつかのブラケットを取り外し参照してくださいading @
  • (?!.*@@)は、negative lookahead assertionです。 2つの文字列のいずれかが見つかった場合は失敗します。@文字が連続しています。

私はあなたの要件についてよく分かりませんが、最後にブラケットセットがある場合、単語境界は必要ありません。あなたが一致したくない括弧なしの類似文字列があることができれば、私はこの主張を確保するために、他の先読みを追加します。

?!.*@@)^@([^()\s]+)(?=\() 

here it is on Rubular(ここでhere on Rubular

関連する問題