我有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中字符串的余数