21

こんにちは私は正規表現のこれにほとんど慣れていません...だから、多分私の問題は簡単ですが、私は解決策を見つけることができません!

私は、ユーザーの文章を調べて、作成された一致を別の色でペイントする正規表現パターンを書いています。たとえば、ユーザーが次のように書いた場合、別の色でペイントしたいと思います。

foo()

事は私がそれを描きたくないということですそれ以降ユーザーが何かを書いた場合、私はユーザーが書くだけの場合を意味します

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

それなら大丈夫です、私はそれを描きたいのですが、ユーザーが書くなら

"foo()d" 

今は私のためによく書かれているので、私はそれを描きたくありません。

「foo()」に一致する(または「foo.foo()」のように中央にドットが付いた)正規表現パターンをすでに作成しましたが、その問題に直面しています。パターンにスペースのみを許可するか、何も許可しないものを追加する必要があります(ユーザーが「)」の後に何か他の文字を書き込んだ場合は、一致させたくありません。これが私のパターンです。

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

どうもありがとうございます!

4

5 に答える 5

19

David Brabant は近いですが、実際には正規表現を で終わらせたいと思っていると思います。(?!\S)これは、空白以外の文字が後に続かないものに一致することを意味します。空白ではなくスペースのみで一致させたい場合は、 を使用します(?![^ ])

于 2012-04-18T15:10:00.463 に答える
6

否定的な先読みを使用する:

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

上記の正規表現で重要な部分は、(\s)*(?!.) です。

(\s)* : 0 個以上の空白が続きます (?!.) : 他の文字はありません

于 2012-04-18T15:03:49.927 に答える
1
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)[ ]?

追加する[ ]?必要があります。?1or0に使用され、[ ]スペースのみに一致します。

また、[\s]?すべてのタイプの空白 (タブを含む) で機能します。

于 2012-04-18T14:57:37.727 に答える
0

私の正規表現テスターに​​よると、これはあなたが探していることをしているようです:

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

複数のスペースを許可する場合は、次を使用します。

[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]*)(?!.)
于 2012-04-18T15:00:56.270 に答える
0

追加してみてください:

\ s *%?

\ s *:0個以上のスペース

%は:文字列の終わりを意味します

于 2012-04-18T15:07:14.740 に答える