正则表达式匹配 #Comment 无法正常工作

标签 regex

我正在尝试编写一个正则表达式,它将检测以下类型的注释:

  • 以单个 # 开头并一直持续到行尾
  • 将处理任何逃脱的# ( \# ) 作为普通文本(因此,如果它不是一个评论,它不会在它后面做任何评论)

  • 使用 this tool ,我想出了以下正则表达式来实现这一点:
    (?!\\)(#(.*)\n)
    

    在全局模式下使用它,我在以下输入文本上对其进行了测试,这是不言自明的:
    #This comment should be caught, and any embedded #s or escaped \#s should also be
    While none of this line this should be \#\#\#
    

    现在,该正则表达式的匹配项是:
  • 整条第一线
  • 第二行从第一行开始的所有内容 #但不包括 \在它之前

  • 显然,这太多了 - 第二行上的任何内容都不应被捕获。我应该改变什么才能让它按照我想要的方式工作?

    最佳答案

    使用这个正则表达式:

    (?<!\\)#.*
    

    说明
  • 回顾 (?<!\\)断言前面的不是反斜杠。
  • #匹配一个哈希
  • .*匹配到行尾

  • 查看 中的匹配项Regex Demo

    引用
  • Lookahead and Lookbehind Zero-Length Assertions
  • Mastering Lookahead and Lookbehind
  • 关于正则表达式匹配 #Comment 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924496/

    相关文章:

    javascript - 正则表达式将字符串计数与通配符匹配

    swift - 如何从开头和结尾包含 # 且末尾不包含空格的字符串中获取主题标签?

    python在路径中使用通配符执行shell命令

    regex - 如何用逗号替换文本 [Windows 上的 Linux]

    python - Python 中的快速多重搜索和替换

    regex - 使用 <> 和正则表达式搜索和替换文本文件中的元素

    c++ - Qt正则表达式在[]之间分割字符串

    python - 删除 pandas df 中的列表字符串开头

    php - 使用 preg_match_all() 获取重复匹配项

    java - 为什么这个模式匹配代码不起作用?