表达到评论或行尾

alf*_*eza 3 python regex

虽然这个问题类似于这个主题

我想在使用正则表达式构造代码时可能会出错.

我希望将一行中的任何内容与注释("#")或行尾(如果它没有注释)匹配.

我正在使用的正则表达式是: (.*)(#|$)

(.*)= Everything
(#|$)=评论或行尾

代码:

OPTION = re.compile(r'(?P<value>.*)(#|$)')
file = open('file.txt')
lines = file.read()
for line in lines.split('\n'):
    get_match = OPTION.match(line)
    if get_match:
        line_value = get_match.group('value')
        print "Match=  %s" % line_value
Run Code Online (Sandbox Code Playgroud)

以上工作但不删除评论.如果文件有一行如下:

this is a line   # and this is a comment
Run Code Online (Sandbox Code Playgroud)

运行代码时我仍然得到整行.

我是否在正则表达式中缺少其他值/信息,或者我是否需要对代码进行更改?

Ben*_*ork 7

*是贪婪的(消耗尽可能多的字符串),因此消耗整行(超过#和到行尾).改成 ".*?" 它会起作用.

有关更多信息,请参阅正则表达式HOWTO.