【发布时间】:2017-01-10 17:45:46
【问题描述】:
我正在尝试查找所有出现的某些代码,除非该代码前面有注释。
这是我要查找的示例:
$page_content .= '<meta http-equiv="refresh"
或
$page_content .= 'Some other text here</p><meta http-equiv="refresh"
前面有或没有空格。 这是我想忽略的内容
//$page_content .= '<meta http-equiv="refresh"
前面有或没有空格。
这样我可以确保我的代码库永远不会包含此代码,除非它在注释中,或者如果发现它时设置一个自动警报,而不会在其被注释掉时收到错误警报(暂时忽略多行 cmets) .
我尝试过使用look behind
(?<!\/\/).*<meta http-equiv="refresh"
但我运气不佳,因为无论是否评论,这仍然匹配每次出现。
还有一件事:如果它在一个正则表达式中而不是在一个代码循环中,那就太好了,这样我就可以在 Notepad++ 或其他支持正则表达式搜索的编辑器中进行搜索。 (令人惊讶的是,一个问题的阅读/理解有多么不同。我以为我已经很清楚了,但是从各种完全有效的答案中,很明显我可以包含更多细节:-)
【问题讨论】:
-
考虑你使用的是贪心算子
.* -
#^[^/]{2}.*#m可以解决 -
/^(?!\/\/)/你试过否定匹配吗?这将忽略以//开头的所有内容 -
多线cmets呢?如果你不在乎,我想你可以使用这个答案的倒数:stackoverflow.com/questions/32462878/… ...
^\h*//.*$(*SKIP)(*FAIL)|.*