正規表現の一致を書き込もうとしています
たとえば、16 進数のカラー コードの一部でない限り、ファイル内の c99 を一致させたい
- 一致しない
#000c99
- DO マッチオン
/mysite.com/c99.php
- DO マッチオン
%20c99.php
- DO マッチオン
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.*?$)