我使用此模式查找字符串中的任何单词: \ B(\ W {1,})
但这不能找到阿拉伯语单词。如何更改此模式以查找英语和阿拉伯语单词?
由于
答案 0 :(得分:1)
Regex \ w是A-z,0-9和_(下划线)的别名,与阿拉伯语unicode范围不匹配。要包含A-z以外的字符,您需要指定它们,例如
[A-z\u0600-\u065F\u066A-\u06EF\u06FA-\u06FF]+
有关字符代码的说明,请参阅Match Arabic word with regex that ends with “#”?
答案 1 :(得分:0)
如果您的文字只包含英文和阿拉伯文,并且您想对结果进行排序,则可以使用以下内容:
([^x00-\x7F ]+)
表示阿拉伯语文字,其中:(\w+)
表示英文文本
第一部分捕捉除英语集之外的所有字符加上空格;第二部分捕获英文字符(加_)。
答案 2 :(得分:0)
像smirnov说的那样,你正在使用的正则表达式只能找到拉丁字符串。对于阿拉伯语,你应该使用[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufbc1]|[\ufbd3-\ufd3f]|[\ufd50-\ufd8f]|[\ufd92-\ufdc7]|[\ufe70-\ufefc]|[\uFDF0-\uFDFD]
(它应该找到所有的阿拉伯字符,甚至是像那样奇怪的字符。)
根据您尝试做的事情,您可能希望将字符串拆分为列表并以此方式处理(这是我在处理混合语言文本时通常最终会做的事情)。然后,您可以识别每个单词的语言并进行相应的处理。