在记事本++中标记单词,包括破折号(-)

Mark words in notepad++ including dash (-)

我想在 Notepad++ 中标记文本日志中的 sql 脚本。 sql 文件的文本格式如下:

AAAAAAAA.BBBBBBBBBBB.sql

所以我执行的是搜索菜单中的这句话:

\w*.sql

我应该得到 BBBBBBBBBBB.sql。关键是在某些脚本名称中有破折号 (-),当出现这种情况时,我没有得到完整的名称,而只是在最后一个破折号之后结束。

例如,在:

AAAAAAAA.BBBBB-CCCCCCC.sql

我想得到BBBBB-CCCCCCC.sql,但我只得到CCCCCCC.sql

是否有任何可能的公式来获得它们?

如果匹配不能以连字符开始和结束:

\w+(?:-\w+)*\.sql
  • \w+匹配1+个单词字符
  • (?:-\w+)* 可选匹配 - 和 1+ 字字符
  • \.sql 匹配 .sql

看到一个regex demo.

注意 在您的模式中 \w* 也可以匹配 0 次出现并且 . 可以匹配任何未转义的字符。


另一种选择是使用字符 class 来匹配 - 或单词字符,但这也允许混合和匹配,例如 --a--.sql

[\w-]+\.sql

再看一个regex demo