首页 > 解决方案 > Python 中关于 re.split() 的正则表达式 [] vs ()

问题描述

在 re.split(pattern,string) 中用作模式时,[,.] 和 (,|.) 有什么区别?有人可以解释一下Python中的这个例子吗:

import re
regex_pattern1 = r"[,\.]"
regex_pattern2 = r"(,|\.)"
print(re.split(regex_pattern1, '100,000.00')) #['100', '000', '00']
print(re.split(regex_pattern2, '100,000.00'))) #['100', ',', '000', '.', '00']

标签: pythonregexsplitcapturing-groupcharacter-class

解决方案


[,\.]相当于,|\.[1]

(,|\.)相当于([,\.])

()创建一个捕获,并re.split返回捕获的文本以及由模式分隔的文本。

>>> import re
>>> re.split(r'([,\.])', '100,000.00')
['100', ',', '000', '.', '00']
>>> re.split(r'(,|\.)', '100,000.00')
['100', ',', '000', '.', '00']
>>> re.split(r',|\.', '100,000.00')
['100', '000', '00']
>>> re.split(r'(?:,|\.)', '100,000.00')
['100', '000', '00']
>>> re.split(r'[,\.]', '100,000.00')
['100', '000', '00']

  1. 不过,您有时可能需要(?:,|\.)限制|将其嵌入到更大模式中的操作数。

推荐阅读