Regex python re.split()空字符串
以下示例取自 “\b”匹配单词开头或结尾的空字符串。这意味着,如果运行此代码,将产生错误 (jupyter笔记本电脑python 3.6)Regex python re.split()空字符串,regex,python-3.x,jupyter-notebook,Regex,Python 3.x,Jupyter Notebook,以下示例取自 “\b”匹配单词开头或结尾的空字符串。这意味着,如果运行此代码,将产生错误 (jupyter笔记本电脑python 3.6) --------------------------------------------------------------------------- ValueError回溯(最近一次调用上次) 在里面 1 reg=重新编译(r“\b”) ---->2关于拆分(注册,“单词,单词,单词。”) /拆分中的usr/lib/python3.6/re.py(模式、
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
1 reg=重新编译(r“\b”)
---->2关于拆分(注册,“单词,单词,单词。”)
/拆分中的usr/lib/python3.6/re.py(模式、字符串、maxsplit、标志)
210,字符串的其余部分作为最终元素返回
列表的第211页。”“”
-->212返回编译(模式,标志).split(字符串,maxsplit)
213
214 def findall(模式、字符串、标志=0):
ValueError:split()需要非空模式匹配。
由于\b只匹配空字符串,因此split()无法获得其要求的“非空”模式匹配。我看到了与split()和空字符串相关的各种问题。有些问题我可以看到您在实践中可能希望如何做,例如,问题。答案从“就是做不到”到(旧的)“这是一个bug”
我的问题是:
re.split(r'(?在中,您可以使用零长度匹配进行拆分:
在版本3.7中更改:添加了对可能匹配空字符串的模式的拆分支持
另外,请注意
模式的空匹配仅在与前一个空匹配不相邻时分割字符串
>>>关于拆分(r'\b',单词,单词,单词')
[“‘单词’、‘单词’、‘单词’、‘单词’、‘单词’、’”
>>>关于拆分(r'\W*',“…单词…”)
['','w','o','r','d','s','','','
>>>关于拆分(r'(\W*)',“…单词…”
[“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”]
还有
re.split(r'(?是否要在单词开头拆分?抱歉,但是使用\b
拆分没有多大意义。请注意,对于Python 3.7,您可以使用零长度匹配进行拆分。更多的是关于空字符串拆分。对于Python 3.7,链接中的另一个问题是否可能。我使用了\b示例,因为它位于网页上,并且G认为这种类型的事情应该是可能的。虽然拆分\b可能不实用,但是如果您想在空匹配上拆分长字符串,则可能会很有用。此示例失败的原因相同:re.split(r'(?用于拆分单词r“\b\W+\b”,而这是为了模拟(不确切地说)\b示例r”(\b\W+\b)“我得到了['foobar'、'barbaz'、'bar']
与re.split(r')(?酷,我猜这两个答案都是正确的。所有这些都可能与前沿(3.7)有关。
re.split(r'\b', 'Words, words, words.')
['', 'Words', ', ', 'words', ', ', 'words', '.']
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-128-f4d2d57a2022> in <module>
1 reg = re.compile(r"\b")
----> 2 re.split(reg, "Words, word, word.")
/usr/lib/python3.6/re.py in split(pattern, string, maxsplit, flags)
210 and the remainder of the string is returned as the final element
211 of the list."""
--> 212 return _compile(pattern, flags).split(string, maxsplit)
213
214 def findall(pattern, string, flags=0):
ValueError: split() requires a non-empty pattern match.
>>> re.split(r'\b', 'Words, words, words.')
['', 'Words', ', ', 'words', ', ', 'words', '.']
>>> re.split(r'\W*', '...words...')
['', '', 'w', 'o', 'r', 'd', 's', '', '']
>>> re.split(r'(\W*)', '...words...')
['', '...', '', '', 'w', '', 'o', '', 'r', '', 'd', '', 's', '...', '', '', '']