如何精确搜索和替换

时间:2014-02-24 09:28:53

标签: python regex

我有一个文本文件,其内容非常类似于

G12

G10,11

GO12

GO10,12

我要做的是将所有'G'替换为'',而不是将'GO'替换为'O'。

我正在尝试使用正则表达式,所以首先我处理的是没有逗号的行

with open(file) as f:
for line in f:
if re.match(r"%s[0-9]+" % 'G', line):
    input = line.strip('G')

事实证明,“G10,11 \ n”字符串也与正则表达式相匹配,这让我感到困惑。

我的陈述是否有任何问题,或者有更简单的方法吗? 非常感谢,

1 个答案:

答案 0 :(得分:4)

你有一些选择。直接翻译您的要求可以获得:G(?!O),您可以用空字符串替换它。可以这样做:

line = re.sub(r"G(?!O)", "", line)
仅当以下字符不是G时,

G才匹配(?!O)O匹配。

您可能希望使用G(?=\d)来匹配G后跟数字。