Python文档:
re.sub(pattern,repl,string,count=0,flags=0)
...
可选参数计数是要替换的模式出现的最大数目; count必须是非负整数。如果省略或为零,则将替换所有匹配项。模式的空匹配仅在不与前一个空****匹配相邻时才被替换,因此sub('x *','-','abxd')返回'-a-b--d-'。
所以x*
应该匹配
1.前的空字符串
- a和b之间的空字符串
- b和x之间的空字符串
1.子字符串'x' - x和d之间的空字符串
- d后面的空字符串
显然(5)没有被取代,但我不明白为什么。如果我们从上面的粗体文本中删除“空”字,我可以看到(5)不会被替换。但是(5)不与先前的空匹配相邻。
1条答案
按热度按时间3b6akqbq1#
我不相信 b 和 x 之间会有空字符串,因为 x 匹配。
该模式实际上是,“如果x,1或更多,或无”。
例如,a 和 b 之间是空白的唯一原因是 b 不是 x。
| 指数|子串|是x|现行串| current string |
| --|--|--|--| ------------ |
| 0到1| a|假的|-abxd| -abxd |
| 1到2| B|假的|-a-bxd| -a-bxd |
| 2比3| x|真的|-a-b-d| -a-b-d |
| 3到4| d|假的|-a-b--d| -a-b--d |
| 4||假的|- a-b-d-| -a-b--d- |