Python正则表达式搜索
我前面的例子不清楚,我举另一个例子:Python正则表达式搜索,python,regex,Python,Regex,我前面的例子不清楚,我举另一个例子: a = '123 - 48 <!-- 456 - 251 - --> 452 - 348' 我明白了: ['123', '48 <!-- 456', '251', '--> 452', '348'] ['123','48452','348'] 但我想要这个: ['123', '48 <!-- 456 - 251 - --> 452', '348'] ['123','48452','348'] 谢谢…首先使用以下方
a = '123 - 48 <!-- 456 - 251 - --> 452 - 348'
我明白了:
['123', '48 <!-- 456', '251', '--> 452', '348']
['123','48452','348']
但我想要这个:
['123', '48 <!-- 456 - 251 - --> 452', '348']
['123','48452','348']
谢谢…首先使用以下方法删除评论:
re.sub("<!--.*?-->", "", your_string)
re.sub(“,”,您的字符串)
然后使用正则表达式提取数字
您也可以使用
代码>(否定的前瞻断言),但这并不是那么简单。首先使用如下方法删除注释:
re.sub("<!--.*?-->", "", your_string)
re.sub(“,”,您的字符串)
然后使用正则表达式提取数字
您也可以使用代码>(消极的前瞻断言),但这并不是那么简单。如果您想要一个正则表达式,您可以使用如下内容:
(\d+)(?!(?:[^<]+|<(?!!--))*-->)
(\d+)(!(?:[^
)
它匹配的数字后面不跟-->
,不跟,如果您想要一个正则表达式,可以使用如下内容:
(\d+)(?!(?:[^<]+|<(?!!--))*-->)
(\d+)(!(?:[^
)
它匹配的数字后面没有-->
,没有您发布的结果是re.findall('(\d+),a);
re.findall('(?:\)|(\d+),a)
['123','48','452','348']
filter(None, re.findall('(?:\<\!--.+\d+.+--\>)|(\d+)',a))
过滤器(无,关于findall('(?:\)|(\d+),a))
['123','48','452','348']您发布的结果是re.findall('(\d+),a);
filter(None, re.findall('(?:\<\!--.+\d+.+--\>)|(\d+)',a))
re.findall('(?:\)|(\d+),a)
['123','48','452','348']
filter(None, re.findall('(?:\<\!--.+\d+.+--\>)|(\d+)',a))
过滤器(无,关于findall('(?:\)|(\d+),a))
['123'、'48'、'452'、'348']你会这样做(得到结果…),使用哪种python版本?根据我的经验,el是数组理解中的字符串类型,而不是使用dict(…)Ok@Update.不过,我认为非捕获组使用<代码>过滤器>代码>最快的解决方案之一,特别是对于较长的文本。(别忘了选择一个答案。)是的(得到结果…,使用哪种python版本?根据我的经验,el是数组理解中的字符串类型,而不是使用dict(…)Ok@Update.不过,我认为非捕获组使用<代码>过滤器>代码>最快的解决方案之一,特别是对于较长的文本。(别忘了选一个答案。)1--2--3
,13
,几个不起作用的例子。1--2--3
,13
,几个不起作用的例子。即使对于strlen~100,它的速度也非常慢(Python2.7)。但如果它支持原子组或所有格量词,你可以尝试(\d+(!(?:[^)
即使对于strlen~100,速度也非常慢(python 2.7)。但是如果它支持原子组或所有格量词,您可以尝试(\d+)(?:[^)
filter(None, re.findall('(?:\<\!--.+\d+.+--\>)|(\d+)',a))