如何在python上使用re模块拆分包含波斯语和英语单词的str



我有some_str='اریافدلاعادر1605;ور硬盘驱动器{HDD}'。我需要regex来将其按波斯语和非波斯语单词进行拆分,以获得如下结果:[]

import re
some_str = 'دریافت اطلاعات در مورد HDD {hdd}'
regex = '???'
re.split(regex, some_str)

对于另一个类似"اضافه کردن اعلام کننده {notifier} روی سرور {host} بوسیله کاربر {role}/{user} از آدرس های IP {ip_address}"的str,我期待下一个结果:

['اضافه کردن اعلام کننده', '{notifier}', 'روی سرور', '{host}', 'بوسیله کاربر', '{role}/{user}', 'از آدرس های', 'IP {ip_address}']

您可以使用此re.split:

import re
# regex for arabic text
reg = re.compile('([u0600-u06FF]+(?:s+[u0600-u06FF]+)*)s*')
# or for matching Persian characters only use:
# [u0622u0627u0628u067Eu062A-u062Cu0686u062D-u0632u0698u0633-u063Au0641u0642u06A9u06AFu0644-u0648u06CC]
some_str = 'دریافت اطلاعات در مورد HDD {hdd}'
lst1 = list(filter(None, reg.split(some_str)))
print (lst1)
## ['دریافت اطلاعات در مورد', 'HDD {hdd}']
s = "اضافه کردن اعلام کننده {notifier} روی سرور {host} بوسیله کاربر {role}/{user} از آدرس های IP {ip_address}"
lstw = list(filter(None, reg.split(s)))
print (lst2)
## ['اضافه کردن اعلام کننده', '{notifier} ', 'روی سرور', '{host} ', 'بوسیله کاربر', '{role}/{user} ', 'از آدرس های', 'IP {ip_address}']

[u0600-u06FF]用于匹配波斯字符。

RegEx详细信息:

  • ([u0600-u06FF]+(?:s+[u0600-u06FF]+)*):在捕获组#1的开头匹配空格分隔的波斯语文本
  • s*:匹配0个或多个空白
  • (.*):匹配捕获组#2中字符串的余数

相关内容

  • 没有找到相关文章

最新更新