Regex: поиск строк, которые не начинаются с X

Я полностью безнадежен с регулярными выражениями...

У меня есть Velocimacro с именем #addButton, и у меня есть JS-функция с именем addButton(). Теперь я хочу найти все места, вызываемые функцией JS. Поэтому мне нужно искать "addButton", где "addButton" не работает с хеш-ключом.

Любые идеи?

Ответы

Ответ 1

/([^#]|^)addButton/

Он будет соответствовать каждой строке, где "addButton" не предшествует "#" или началу строки.

Ответ 2

Я не знаю, что такое Velocimacro (судя по другому ответу, я думаю, что "addButton" появится на его собственной линии?), но верный способ найти слово "addButton" , которому не предшествовал #:

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

Он будет:

  • (?<!#) (?)
    • Убедитесь, что текущая позиция не предшествует значению # (хэш-метка)
  • \b (?)
    • Убедитесь, что текущая позиция является границей слов (в этом случае она гарантирует, что предыдущий символ не является символом слова и что следующий символ)
  • addButton (?)
    • Соответствует "addButton"
  • \b (?)
    • Убедитесь, что в текущей позиции есть граница слова. Это позволяет избежать совпадения таких вещей, как "addButtonNew" (потому что между "addButton" и "New" нет границы слова)

Разница с этим регулярным выражением, а другая заключается в том, что этот символ не будет потреблять символ до "addButton" .

Хорошим ресурсом для изучения регулярных выражений является regular-expressions.info. Нажмите ссылку (?) В приведенном выше списке для ссылки на соответствующую страницу для этой части регулярного выражения.