我是这个网站的新手,也是Python的新手。
所以我正在学习正则表达式,而我正在研究Google的示例 here
我正在做一个'搜索'示例,但是我将'搜索'更改为'拆分'并稍微更改了搜索模式以便使用它,这就是行
print re.split(r'i', 'piiig')
(请注意文本'piiig'中有3个我')
输出只有2个空格,在那里被拆分。
['p', '', '', 'gs']
只是想知道为什么会给出这个输出。这不是一个现实生活中的问题,并没有任何相关性,但我想我可能会在以后遇到这个并想知道发生了什么。
有人知道发生了什么事吗???
答案 0 :(得分:6)
如果将i
替换为,
:
print re.split(r',', 'p,,,g')
在这种情况下,通过分割逗号找到四个字段,'p'
,'g'
和中间的两个空''
。
答案 1 :(得分:2)
split
删除它找到的实例。两个空白字符串是i
s之间的两个空字符串。
如果join
使用i
作为分隔符将数组重新组合在一起,则会返回原始字符串。
piiig
,在这方面是p-
i
-
i
-
i
-g
(此处)我正在使用短划线表示空字符串)
答案 2 :(得分:0)
以这种方式思考......(在Java中,因为我在python中不太好)
String Text = "piiig";
List<String> Spliteds = new ArrayList<String>();
String Match = "";
int I;
char c;
for (I = 0; I < Text.length; I++) {
c = Text.charAt(I);
if (c == 'i') {
Spliteds.add(Match);
Match = "";
} else {
Match += c;
}
}
if (Match.length != 0)
Spliteds.add(Match);
所以当你跑...
At the end of each loop:
When: (I == 0) => c = 'p'; Match = "p"; Spliteds = {};
When: (I == 1) => c = 'i'; Match = ""; Spliteds = {"p"};
When: (I == 2) => c = 'i'; Match = ""; Spliteds = {"p", ""};
When: (I == 3) => c = 'i'; Match = ""; Spliteds = {"p", "", ""};
When: (I == 4) => c = 'g'; Match = "g"; Spliteds = {"p", "", ""};
At the end of the program:
(I == 4) => c = 'g'; Match = "g"; Spliteds = {"p", "", "", "g"};
RegEx引擎只是简单地在每个'i
'之间找到字符串,这包括'i'在另一个'i'之后的空字符串。
希望这有帮助。