Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex python re.split()空字符串_Regex_Python 3.x_Jupyter Notebook - Fatal编程技术网

Regex python re.split()空字符串

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(模式、

以下示例取自

“\b”匹配单词开头或结尾的空字符串。这意味着,如果运行此代码,将产生错误

(jupyter笔记本电脑python 3.6)

---------------------------------------------------------------------------
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”

我的问题是:

  • 既然这仍然是python网页上的一个示例,那么这是否可能?在最新版本中是否可能

  • 上述链接中的问题涉及
    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', '...', '', '', '']