python - 为什么 re.split() 保留分隔符而 split() 没有
问题描述
在拆分时String
,我发现使用regex
. 考虑以下示例 -
- using
string.split()
给了我一个list
排除分隔符-.
var3 = "black.white"
print(var3.split('.'))
# result
# ['black', 'white']
- 使用
re.split()
这个正则表达式([.] *)
-给了我一个list
包括分隔符 -.
var3 = "black.white"
print(re.split('([.] *)', var3))
# result
# ['black', '.', 'white']
re.split()
与这个正 则表达式一起使用-[.] *
没有分组括号()
给我一个list
排除分隔符 -.
var3 = "black.white"
print(re.split('[.] *', var3))
# result
# ['black', 'white']
我知道与分组括号有关()
,但不明白为什么。因此,我想到了这三个问题-
- 为什么
string.split()
不保留分隔符 - 为什么要
re.split()
保留分隔符 - 为什么分组括号
()
会regex
有所不同
注意:我是python
新手regex
解决方案
1.为什么string.split()不保留分隔符
因为这正是它应该做的决定。在大多数情况下,这通常比保留它更可取,例如,如果您想按空格分割单词。
2.为什么re.split()保留分隔符
它没有——模式中没有捕获组(用括号表示)。这反映了str.split
API。
3.为什么在正则表达式中分组括号()会有所不同
当您在正则表达式模式中放入括号中的内容时,它将成为“捕获组”。通常,这使您可以将正则表达式模式与字符串匹配,然后“捕获”该字符串的某些部分。例如,
re.match('h.llo, wo(.)ld!', 'hello, world!').group(1)
返回r
(因为它在1
st 捕获组中)。组 0 将始终是整个匹配的字符串,在这种情况下:hello, world!
.
这只是 re.split 的一个(方便)功能,如果它们存在,它将在结果列表中包含捕获组。
推荐阅读
- ios - Swift-Watch:如何检测用户滚动到 WKInterfaceTable 中的最后一行
- javafx - 如何绑定 ObjectBinding
到带有格式化程序的标签? - typescript - 在 Typescript 中做名义类型的最强方法?
- android - Kotlin、Dagger 和 Realm - DI 概念问题
- oracle-apex - 相关的交互式报告
- r - 尝试在 R Shiny 应用程序中的单行上显示多个输入
- reactjs - 如何使用功能组件中的反应挂钩替换组件是否更新?
- react-native - React Native,如何立即更新异步存储?
- binding - SwiftUI & UITextField ViewModel 绑定问题
- android - 安卓底片设计