正则表达式匹配前两个正斜杠(//)之前没有包含在引号中的所有内容

时间:2012-02-19 20:24:03

标签: regex

我一直在努力应对一些负面的前瞻和后视模式无济于事。我需要一个正则表达式,它将在两个正斜杠之前匹配字符串中的所有内容,除非所述字符在引号中。

例如,在字符串"//this is a string//" //A comment about a string about strings中, 子串"//this is a string//"应该匹配,其余的被忽略。 如您所见,重点是排除任何单行注释(C ++ / Java样式)。 谢谢你提前。

3 个答案:

答案 0 :(得分:2)

你走了:

^([^/"]|".+?"|/[^/"])*

答案 1 :(得分:1)

怎么样

\/\/[^\"']*$

如果//"后面没有',则匹配"。这不完全符合您的要求,但非常符合您的要求。它只会阻止包含'// I like "bread". 的评论,例如

{{1}}

可能比没有解决方案好。

答案 2 :(得分:0)

基于python / regex的评论转发器我写了一段时间,如果它有用:

def remcomment(line):
  for match in re.finditer('"[^"]*"|(//)', line):
    if match.group(1):
      return line[:match.start()].rstrip()
  return line