我正在尝试编写正则表达式匹配
我想匹配文件中的 c99,只要它不是十六进制颜色代码的一部分
- 不匹配
#000c99
- 做匹配
/mysite.com/c99.php
- 做匹配
%20c99.php
- 做匹配
c99?hi=moo
这甚至可以使用正则表达式吗?
使用正则表达式模块:
>>> 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']
最直接的方法是匹配行中带有“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()
可能有一种方法可以在单个正则表达式中完成,但这只是我想到的第一件事。
使用这个正则表达式(^([^#].*?)?c99.*?$)