我正在尝试重新(编码)已解码的 LC_TIME
(区域设置)文件。我想匹配引号之间的所有字符串,但如果它们是注释的一部分,则不匹配,注释行以 %
开头.
r'"([^"]*)"'
可以很好地匹配引号之间的所有字符串,但它不会检查它是否是注释的一部分。
澄清一下:
abday "Sun";"Mon";/
"Tue";"Wed";/
"Thu";"Fri";/
"Sat"
应该会产生七场比赛
d_fmt "%m/%d/%Y"
应该会产生一场比赛
% Appropriate time representation (%X)
% "%r"
应该不导致匹配
注意:
re.findall('^(?!%).*?"([^"]*)"', text, flags=re.M)
几乎可以达到目的,但它只匹配 ['Sun', 'Tue', 'Thu', 'Sat']
在 abday
示例。
参见this link用于对多种情况进行测试。
最佳答案
使用否定先行断言:
>>> text = '''
a "quoted" element
% "Comment"
"something else"
'''
>>> re.findall('^(?!%).*?"([^"]*)"', text, flags=re.M)
['quoted', 'something else']
>>> re.findall('^(?!%)[^"]*"([^"]*)"', text, flags=re.M)
['quoted', 'something else']
关于python - 在引号之间匹配字符串时出现问题,但如果行以 % 开头则不会出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584402/