考虑一个字符串s = "aa,bb11,22 , 33 , 44,cc , dd "
。
我想使用Python中的正则表达式模块s
拆分为以下标记列表,这类似于 Perl 提供的功能:
"aa,bb11"
"22"
"33"
"44,cc , dd "
笔记:
- 我想用逗号标记,但前提是这些逗号的两边都有数字。
- 我要定位的这些“数字逗号”周围的任何(可选)空格都应该在结果中删除。可选的空格可能不止一个空格。
- 任何其他空格都应保留在原始字符串中的显示位置。
到目前为止,我最好的尝试如下:
import re
pattern = r'(?<=\d)(\s*),(\s*)(?=\d)'
s = 'aa,bb11,22 , 33 , 44,cc , dd '
print re.compile(pattern).split(s)
但这会打印:
['aa,bb11', '', '', '22', ' ', ' ', '33', ' ', ' ', '44,cc , dd ']
这与我想要的很接近,因为我想要的 4 件事都包含在列表中。我可以通过并摆脱任何空字符串和任何仅包含空格/逗号的字符串,但我宁愿有一个单行正则表达式来为我完成所有这些。
有任何想法吗?