python - python re模块中split函数的空匹配

标签 python regex

我只是想知道如何' 第二个结果中出现空字符串'。
谁能告诉我一步一步发生了什么?

>>> re.split(r'\W*', '...words...')
['', '', 'w', 'o', 'r', 'd', 's', '', '']
如果我没有错,第一个空匹配是因为 python re 模块文档中的这句话:

If it matches at the start of the string, the result will start with an empty string. The same holds for the end of the string

最佳答案

regex demo at regex101 :enter image description here .它显示匹配发生的位置。现在,回想一下 re.split使用匹配值(此处为空字符串,字符串中的位置)拆分字符串,您可以轻松查看拆分发生的位置:

  • ...找到并发生 split => ['', 'words...']
  • w找到了,所以 \W*匹配前面的空格 => ['', '', 'words...']
  • o找到了,所以 \W*匹配前面的空格 => ['', '', 'w', 'o', 'rds...']
  • r找到了,所以 \W*匹配前面的空格 => ['', '', 'w', 'o', 'r', 'ds...']
  • d找到了,所以 \W*匹配前面的空格 => ['', '', 'w', 'o', 'r', 'd', 's...']
  • s找到了,所以 \W*匹配前面的空格 => ['', '', 'w', 'o', 'r', 'd', 's', '...']
  • ...找到了,所以 \W*匹配 => ['', '', 'w', 'o', 'r', 'd', 's', ''] (注意最后一个 '' 不仅仅是空字符串,它是一个空字符串,其结尾位置仍然可以匹配)
  • 找到字符串的结尾,所以 \W*匹配此位置 => ['', '', 'w', 'o', 'r', 'd', 's', '', ''] .
  • 关于python - python re模块中split函数的空匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64631146/

    相关文章:

    java - 如何在Java中分割一个数字而不丢失其他相同的字符

    javascript - 允许正则表达式以句点或减号开头

    Python ducktyping 感觉笨拙这是 Pythonic 吗?

    Python 异常安全 Pickle 使用

    python - 无法使用 cv2.VideoCapture(video_path).set(cv2.CAP_PROP_FPS, new_frame_rate) 更改输入视频的帧速率

    Javascript 如果数组包含带有正则表达式的字符串

    正则表达式不应匹配括号内的数字

    python - 使用多个分隔符拆分字符串,并保留*一些*分隔符,但不是全部

    python - 如何从字典创建 2Darray?

    python - 为什么当我运行调用 B.exe 的 A.exe 时失败,因为 B.exe 尝试在 A.exe(调用者)文件夹而不是 B.exe 文件夹(调用者)中查找其模块?