Regex: Finding strings that doesn't start with X

后端 未结 2 1846
陌清茗
陌清茗 2021-01-01 18:26

I am completely hopeless with regular expressions...

I have a Velocimacro named #addButton, and I have a JS function named addButton(). Now

相关标签:
2条回答
  • 2021-01-01 18:35
    /([^#]|^)addButton/
    

    It will match every string where "addButton" is not preceded by "#" or the beginning of the string.

    0 讨论(0)
  • 2021-01-01 18:35

    I don't know what Velocimacro is (judging from the other answer I guess "addButton" will appear on its own line?), but the sure-fire way of finding the word "addButton" that is not preceeded by # is the following:

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

    It will:

    1. (?<!#) (?)
      • Make sure that the current position is not preceeded by a # (hash mark)
    2. \b (?)
      • Make sure that the current position is a word boundary (in this case it makes sure that the previous character is not a word character and that the next character is)
    3. addButton (?)
      • Match "addButton"
    4. \b (?)
      • Make sure that there is a word boundary at the current position. This avoids matching things like "addButtonNew" (because there is no word boundary between "addButton" and "New")

    A difference with this regular expression and the other is that this one will not consume the character before "addButton".

    A good resource for learning about regular expressions is regular-expressions.info. Click the (?) link in the list above for a link to the relevant page for that part of the regex.

    0 讨论(0)
提交回复
热议问题