dip*_*kar 4 python regex python-2.7
我正在查看这个早先提出的问题的回答:
对于这个问题的变体,我想分开一些不是来自特定字符集的内容.这让我得到了一个我喜欢的解决方案,直到我发现了这个明显的错误.这是一个我不熟悉的bug或python的怪癖吗?
>>> b = "Which_of'these-markers/does,it:choose to;split!on?"
>>> b1 = re.split("[^a-zA-Z0-9_'-/]+", b)
>>> b1
["Which_of'these-markers/does,it", 'choose', 'to', 'split', 'on', '']
Run Code Online (Sandbox Code Playgroud)
鉴于逗号不在我的例外列表中,我不明白它为什么不用逗号分隔(',')?
的'-/一个字符类中创建包括逗号的范围:
当你需要在Python re模式中放置一个文字连字符时,把它放:
[-A-Z]匹配大写的ASCII字母和-)[A-Z()-]匹配大写的ASCII字母(,, )或-)[A-Z-+]匹配大写的ASCII字母,-或+)你不能把它放在一个简写之后,就在一个独立的符号之前(因为[\w-+]它会导致一个糟糕的字符范围错误).这在.NET和其他一些正则表达式中有效,但在Python中无效re.
将连字符放在其末尾,或将其转义.
使用
re.split(r"[^a-zA-Z0-9_'/-]+", b)
Run Code Online (Sandbox Code Playgroud)
在Python 2.7中,您甚至可以将其收缩
re.split(r"[^\w'/-]+", b)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |