2009-08-12 7 views
13

で起動しない検索文字列...正規表現:私は正規表現と完全に絶望していますX

私は#addButtonをのVelocimacroを命名している、と私はaddButton()という名前のJS機能を持っています。 JS関数が呼び出された場所をすべて探したいと思います。だから私は "addButton"、 "addButton" は、ハッシュキーで始まらない検索する必要があります。

アイデア?

答えて

12
/([^#]|^)addButton/ 

それは「addButton」は「#」または文字列の先頭に先行ないあるすべての文字列にマッチします。

+0

また、(文字列の先頭に一致するように)もう少し頑強にするために、/(?:^ | [^#])addButton/' – Amber

+0

awesome! ...私は正規表現にいくつかの時間を投資する必要があると思う...それはどこでもポップアップし続ける... – peirix

22

私はVelocimacroが何であるか分かりません(他の答えから "addButton"がそれ自身の行に表示されると思います)が、先にはない "addButton"という単語を見つける確かな方法#は次のとおりです。

/(?<!#)\baddButton\b/ 

それ以下となります。

  1. (?<!#)(?)
    • 現在のことを確認してください位置は#(ハッシュマーク)が付け加えていません
  2. \b(?)
    • 現在位置がワード境界であることを確認します(この場合は、前の文字が単語文字でないことを確認しますそして次の文字があること)
  3. addButton(?)
    • マッチ "addButton"
  4. \b(?)
    • は、現在位置の単語境界があることを確認してください。 (「addButton」と「新」の間には、ワード境界がないので)これは、この正規表現や他との違いは、この1つは消費しないということです

「addButtonNew」のようなものをマッチング回避します「addButton」の前に文字を挿入します。

正規表現の学習に役立つリソースは、regular-expressions.infoです。上のリストの(?)リンクをクリックすると、正規表現のその部分の関連ページへのリンクが表示されます。

+0

優れた有益な答え。ありがとう! (:私はEclipseで正規表現の検索を行っていたので、消費する文字は問題ではありません。(btw、Velocimacroは、Velocity(オープンソースのテンプレート言語)の関数のようなもので、Velocityのすべてのコマンドだけがハッシュキーで始まります) – peirix

+0

ありがとうございます。「Do not match#それに続くスペースがあれば? " –

関連する問題