1

我正在尝试编写正则表达式匹配

我想匹配文件中的 c99,只要它不是十六进制颜色代码的一部分

  • 不匹配 #000c99
  • 做匹配/mysite.com/c99.php
  • 做匹配%20c99.php
  • 做匹配c99?hi=moo

这甚至可以使用正则表达式吗?

4

3 回答 3

2

使用正则表达式模块

>>> rx = regex.compile(r"(?<!#\d{0,3})c99")
>>> rx.findall("#000c99")
[]
>>> rx.findall("/mysite.com/c99.php")
[u'c99']
>>> rx.findall("%20c99.php")
[u'c99']
>>> rx.findall("c99?hi=moo")
[u'c99']
于 2012-07-04T22:09:16.627 回答
1

最直接的方法是匹配行中带有“c99”的行,然后丢弃 c99 在颜色代码中的任何位置:

line = fileHandle.readline()
while (line) :
     if (re.search("c99", line)) :
          if (re.search("#.?.?.?c99", line)) :
               pass
          else :
               # line contains c99 not in a color code
     line = fileHandle.readline()

可能有一种方法可以在单个正则表达式中完成,但这只是我想到的第一件事。

于 2012-07-04T21:46:54.760 回答
0

使用这个正则表达式(^([^#].*?)?c99.*?$)

于 2012-07-04T21:57:19.320 回答