忽略正则表达式中带空格的注释

2024-04-26 19:03:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如何修改以下代码行(读取config_file中的参数名称):

re.findall('Parameter.*', config_file)

以便忽略左侧包含注释符号(%)的行?i、 e.在下面的例子中

Parameter: A
%Parameter: B
  %  Parameter: C
 Parameter: D %the best parameter

只有A和D匹配?你知道吗


Tags: the代码re名称config参数parameter符号
2条回答

您可以在findall中使用regex交替和捕获组:

>>> test_str = ("Parameter: A\n"
...     "%Parameter: B\n"
...     "  %  Parameter: C\n"
...     " Parameter: D %the best parameter")
>>>
>>> print filter(None, re.findall(r'%\s*Parameter|(Parameter.*)', test_str))
['Parameter: A', 'Parameter: D %the best parameter']

要放弃的匹配项应该出现在替换中最后一个捕获组匹配项之前。你知道吗

RegEx Demo

试试这个正则表达式:

(?:(?<=^)|(?<=\n))\s*Parameter.*

Click for Demo

说明:

  • (?:(?<=^)|(?<=\n))-查找前面有\n或字符串开头的位置
  • \s*-匹配0+个空格
  • Parameter.*-匹配Parameter,后跟0+个字符(换行符除外)

相关问题 更多 >