首页 > 解决方案 > 正则表达式 ??? (三个相邻的问号)用于 PyCharm 的代码标签

问题描述

我正在尝试在我的 Python 代码中使用PEP 350 -- Codetags更多。

我的 IDE 是 PyCharm,我目前正在扩展TODO评论正则表达式。它位于TODO菜单 ( Preferences > Editor > TODO) 中。默认的 PyCharm 正则表达式使用 word boundary \b

我目前已将其扩展为:\b(todoc*|fixme|caveat|see)\b.*

我一直在使用正则表达式 101,但我一生都找不到捕获以下代码标签的方法:

**编辑:有人在评论中询问我是否想将单词的结尾与特殊字符(例如:)匹配foo!!!。我不会,通常评论看起来像!!! some information

**编辑 2:代码标签后面可以跟一个冒号(例如:TODO:, CAVEAT:),因此正则表达式在这方面应该是灵活的。


我试过的

三个点的正则表达式?


版本

标签: pythonregexpycharmregex-group

解决方案


\b您可以使用空白边界并添加|!!!到交替中,而不是使用单词边界。

(?<!\S)((?:todo[ :]|(?:fixme|caveat|todoc|see|[?]{3}|!!!)(?!\S))).*

在部分,这将匹配

  • (?<!\S)左边的空白边界
  • (捕获组 1
    • (?:非捕获组
    • todo[ :]匹配 todo 后跟空格或:
    • |或者
    • (?:fixme|caveat|todoc|see|[?]{3}|!!!)(?!\S)匹配右边的空白边界后面的任何替代项
    • )关闭非捕获组
  • )关闭捕获组
  • .*匹配除换行符以外的任何字符 0+ 次

正则表达式演示


推荐阅读