假设我有一个字符串:
欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010如何将其拆分为两个字符串数组?['欧珑 无极乌龙','Atelier Cologne Oolang Infini, 2010']
我试过了:
names = re.split(r'([a-zA-Z]+)', names)但它给了我们:
names: ['欧珑 无极乌龙 ', 'Atelier', ' ', 'Cologne', ' ', 'Oolang', ' ', 'Infini', ', 2010']发布于 2020-11-11 07:48:05
一个快速简单的正则表达式,用于区分拉丁和非拉丁部分(regex101 )。
(?i)[^a-z\d]+|[_a-z\d\W]+与re.findall (tio.run )一起使用。正则表达式可以很好地自我解释和匹配
[^a-z\d]+ one or more characters,可以是not拉丁字母,也可以是digits [_a-z\d\W]+一个或多个,可以是_拉丁语字母、数字或数字它很快,但是你需要从结果中去掉空格。否则它会变得更复杂:)要在结果中区分拉丁语和非拉丁语,你可以使用finditer groups (tio.run )。
import re
text = '欧珑 无极乌龙 Atelier Cologne Oolang Infini, 2010 乌龙乌 foo$'
pattern = '(?i)([^a-z\d]+)|([_a-z\d\W]+)'
for m in re.finditer(pattern, text):
if(m.group(1)):
print("non-latin:\t'" + m.group(1).strip() + "'")
if(m.group(2)):
print("latin:\t\t'" + m.group(2).strip() + "'")https://stackoverflow.com/questions/64777908
复制相似问题