我正在尝试将hello world123
之类的令牌标记为hello
,world
和123
。
我认为代码中有两个部分,但是不能将它们正确组合在一起tokenize
。
(?u)\b\w+\b
(?<=\D)(?=\d)|(?<=\d)(?=\D)
答案 0 :(得分:2)
您可以使用
import re
s = "hello world123"
print(re.findall(r'[^\W\d_]+|\d+', s))
# => ['hello', 'world', '123']
请参见Python demo
模式详细信息
[^\W\d_]+
-1个或更多字母|
-或\d+
-1个以上的数字。请参见regex demo。
奖金:要匹配任何字母子串和各种数字,请使用
[^\W\d_]+|[-+]?\d*\.?\d+(?:[eE][+-]?\d+)?
请参见this regex demo。
有关正则表达式的详细信息,请参见Parsing scientific notation sensibly?。