在这行代码中:
for iters in len(array) # for iters in len(array)
for iters in len(array)
我正在尝试匹配for
和in
,但在评论之外。
尝试使用此正则表达式(?<!#.)(\bfor\b|\bin\b)
,但会导致匹配:
*for* iters *in* len(array) # for iters *in* len(array)
*for* iters *in* len(array)
它还匹配评论中的in
。目前我不知道如何避免评论中的in
。
在这里看到了另一个解决方案,但这涉及删除评论,这在这种情况下不适用......
答案 0 :(得分:1)
我认为你最好的选择就是在#&#39;#&#39;并且只在第一部分匹配,但是你需要确保你没有任何#&#39;#&#39;在字符串里面。
答案 1 :(得分:1)
如果您只是需要测试该行是否匹配,则可以use this:
^[^#]*(\bfor\b|\bin\b)
如果您需要每次出现for和in,请尝试something like this:
(?:^|\G)[^#]*?(\bfor\b|\bin\b)
(?:^|\G)
可确保从该行的开头或上一场比赛停止的位置开始,没有#
个字符。
答案 2 :(得分:-1)
使用非捕获组来处理评论。
因此:
(\bfor\b|\bin\b)|(?:#.*)
首先匹配for
/ in
,然后非捕获组将与评论匹配并忽略这些评论。