Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式在Python中grep字符串_Python_Regex - Fatal编程技术网

使用正则表达式在Python中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

我试图在python中使用re在列表中grep两种模式:

'<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>']