使用正则表达式在Python中grep字符串
我试图在python中使用re在列表中grep两种模式:使用正则表达式在Python中grep字符串,python,regex,Python,Regex,我试图在python中使用re在列表中grep两种模式: '<xyz>number followed by optional *</xyz>' 'name="namepad">number</xyz> “数字后跟可选*” 'name=“namepad”>编号 在python中使用regex,我无法获得带有星号的数据。这是一个示例会话,我可以做些什么使过滤器也返回第一个元素 >>> k = ['<xyz>27*</x
'<xyz>number followed by optional *</xyz>'
'name="namepad">number</xyz>
“数字后跟可选*”
'name=“namepad”>编号
在python中使用regex,我无法获得带有星号的数据。这是一个示例会话,我可以做些什么使过滤器也返回第一个元素
>>> k = ['<xyz>27*</xyz>', 'name="namePad">22</xyz>']
>>> f = filter(lambda x:re.search('^name="namePad"|^<xyz>[0-9]{1,3}\*" <\/xyz>',x), k)
>>> f
['name="namePad">22</xyz>']
>k=['27*','name=“namePad”>22']
>>>f=过滤器(lambda x:re.search(“^name=”namePad“|^[0-9]{1,3}\*”,x),k)
>>>f
['name=“namePad”>22']
您的正则表达式有不匹配的“
引号。试试这个:
filter(lambda x:re.search(r'^name="namePad"|^<xyz>[\d]{1,3}\*?</xyz>',x), k)
filter(lambda x:re.search(r'^name=“namePad”^[\d]{1,3}\*?',x),k)
它将为您提供以下信息:
['27*','name=“namePad”>22']
可以使用“自”仅在字符串开头检查匹配项。你也不需要使用它
>>[i表示k中的i,如果重新匹配(r'(| name=“namePad”>)\d+\*?',i)]
['27*','name=“namePad”>22']
*
后面的?
表示*
是可选的。您可以阅读更多有关量词的信息您的预期输出是什么?所有k(第一行):['27*,'name=“namePad”>22']什么是?如果*
不存在,则在*for?之后,它仍将与数字匹配。
>>> [i for i in k if re.match(r'(<xyz>|name="namePad">)\d+\*?', i)]
['<xyz>27*</xyz>', 'name="namePad">22</xyz>']