【发布时间】:2020-07-17 05:58:39
【问题描述】:
在拆分String 时,我使用regex 发现了不同的结果。考虑以下示例 -
- 使用
string.split()给我一个list排除分隔符-.
var3 = "black.white"
print(var3.split('.'))
# result
# ['black', 'white']
- using
re.split()using this regex-([.] *)给了我一个list包括分隔符 -.
var3 = "black.white"
print(re.split('([.] *)', var3))
# result
# ['black', '.', 'white']
- 使用
re.split()和这个 regex-[.] *没有分组括号()给我一个list排除分隔符 -.
var3 = "black.white"
print(re.split('[.] *', var3))
# result
# ['black', 'white']
我知道分组括号 () 与此有关,但不明白为什么。因此,我想到了这三个问题-
- 为什么
string.split()不保留分隔符 - 为什么
re.split()保留分隔符 - 为什么在
regex中分组括号()会有所不同
注意:我是 python 和 regex 的新手
【问题讨论】:
-
括号在正则表达式中定义了捕获组,因此当您将表达式放在括号中时 - 您定义它必须被捕获。
-
这就是
re.splitAPI 的工作原理。如果您在分隔符周围放置一个捕获组,那么 Python 将保留它。顺便说一句,这里真正分裂的正则表达式模式只是([.])...没有使用空格。 -
@TimBiegeleisen 你的计划的话解释了很多与官方文档相比!