2012-04-18 11 views
13

こんにちは私はRegexのこれで新しいです...だから多分私の問題は簡単ですが解決策を見つけることができません!Regex - マッチの後に空白を入れるか、何もしない

私は、ユーザの書いたものを見て、見つかった別の色でペイントする正規表現のパターンを書いています。 は、私は、ユーザーがこのような何かを書く場合は、別の色でペイントし、たとえばたい:

の事は、私は、ユーザーがその後に何かを書き込むと、私は次の場合に意味することをペイントしたくないということである
foo() 

ユーザーのみ

"foo()" (or "foo() ") 

を書くには、それは私がそれをペイントしたい、罰金だが、ユーザーは

"foo()d" 

を書く場合、私はためになりましたよく書かれていることをペイントしたくありません 私のために。

"foo()"(または "foo.foo()"のような真ん中のドット)にマッチする正規表現パターンは既に書いてありますが、私はその問題に直面しています。 。

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\) 
:私はそれを一致させる必要はありません(ユーザーが後に何かを書く場合「)」だけのスペース、または何もすることができ、その私のパターンに何かを追加する必要があります) これが私のパターンです

ありがとうございます!

+1

あなたが求めていることは完全にはっきりしていません。この後に文字がありますか?そうでなければ、正規表現を '\ s?$'で終了することができます。 –

+0

そうですね、これは私がユーザーに書き込みを続けるようにしたいからです。 – gezequiel

答えて

12

デビッド・ブラバントは近いですが、私はあなたが実際に(?!\S)を使用して正規表現を終了してみたいと思います - これはあなたを意味します空白以外の文字が続かないものにはマッチします。空白ではなく空白にマッチさせる場合は、(?![^ ])を使用してください。

+0

Regexを初めて使うので、^記号と$記号もわからないことがあります。彼らはラインアンカーです。たとえば、あなたの正規表現が "^ foo()[]?$"だった場合、それは "foo()"と "foo()"と一致するでしょう。 – Scen

+0

はい、私はそれらのシンボルについて知っていますが、私の場合にはうまくいかないでしょう... – gezequiel

0

[AZ] [AZ](( "[^" の\ r \ n] 「|? - [。]?[] \ bは\ dは+の\ dは \ b)参照)。?[] ?[]?それを行うが。?1または0のために使用されている必要があり、[]空間のみにマッチします追加

また、[\ s]は?空白のすべてのタイプのために働くだろう(付属のタブ。)

+0

次の文字が空白でないかのように、これは機能しません。私は '\ S'、つまり空白以外の文字にマッチすれば、gezequielは失敗したいと思う。 –

+0

ああ、ありがとう、より完全に質問を読む必要があります。 – Scen

0

これは、あなたが私の正規表現テスターに​​応じて探しているものをやっているようだ:

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]?)(?!.) 

あなたがこれを使用する、複数のスペースを可能にする場合:先に

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]*)(?!.) 
4

利用ネガティブな外観:

(\w+)(\.*)(\(\))+(\s)*(?!.) 

上記の正規表現ではあなたのための重要な部分は次のとおりです。(\ S)*()

(\ sで)*:?!?!。0以上の空白 (続く):なし、他の文字

+0

これは素晴らしいです!ありがとう! – gezequiel

+0

+1:いい答えです!完璧に動作します。 –

+0

@gezequiel:私の前のコメントを見てください。あなたがこれに加える必要がある少し微妙な調整があります。 –

0

追加しようとすることができます:

\ s *%?

\ sの*:

%が意味ゼロ以上のスペース

:文字列の最後

関連する問題