正则表达式检索具有有限数字和无限特殊字符的子字符串

时间:2014-09-18 04:34:34

标签: python regex

有一个带有数字,字母和特殊字符的文字。 我需要获得该文本的精确子字符串,其中任何数量的spec.chars子集可以与一定数量(例如,5个或更多)的数字组合。除了数字和spec.symbols之外,子字符串不能有任何其他内容(因此,任何字母符号或非子集spec.symbols都会破坏它)。 这是一个例子:

Special characters: '[,%> ]'
Input: 'out >>> 23451 %% 27, where: 1155 >>    4+ %9 and 5444 off'
Output: [' >>> 23451 %% 27, ', ' 1155 >>    4']

'([0-9]{5,}|[,%> ])'这样的正则表达式显然无效。

2 个答案:

答案 0 :(得分:2)

我可能会误解你,但也许是这样的......

>>> import re
>>> s = 'out >>> 23451 %% 27, where: 1155 >>    4+ %9 and 5444 off'
>>> re.findall(r'(?:[,%> ]*\d){5}[\d,%> ]*', s)
[' >>> 23451 %% 27, ', ' 1155 >>    4']

答案 1 :(得分:1)

([>\d%,\s]+)(?=.*?\+)

你可以尝试一下。参见演示。

http://regex101.com/r/jT3pG3/40