我正在处理包含阿拉伯语类别的网址字符串的模式匹配。
例如,在英语中,只要我看到以下内容:
匹配模式 - &gt; <button id="3days" type="button" ng-click="$ctrl.dayChanger(3)">3 days</button>
我用这种模式替换它 - &gt; (.*)/Store/SomeThing/(.*)
这样
$1/store/something
可能没有&#34;无论什么&#34;并变得像
http://baseurl.com/en-gb/Store/SomeThing/WhatEver
现在,我怎么能用阿拉伯语做这样的事呢?
例如,这是我的测试:
1)测试网址匹配:
1a)http://baseurl.com/en-gb/store/something
1b)http://baseurl.com/ar-gb/Store/عرمنتجات/عرع
如何切割http://baseurl.com/ar-gb/Store/عرع/عرمنتجات
之后的所有内容,无论是什么,因为&#34; /&#34;也是一个阿拉伯字符,它像其他阿拉伯字母一样处理?
2)测试中的匹配模式:
2a)عرمنتجات
2b)(.*)/Store/عرمنتجات/(.*)
2c)(.*)/Store/(.*)/عرمنتجات
:::: TEST RESULTS ::::
在我的测试期间
(1a)与(2a)和(2c)相匹配,两者看起来都很奇怪
(1b)与(2b)匹配,但很奇怪,我会假设(2a)与它一起工作,但不是
长话短说,这个模式匹配的等价物是什么:
- (.*)/Store/عرمنتجات
考虑到SomeThing是用阿拉伯语写的,用阿拉伯语写的?
答案 0 :(得分:0)
这种行为可能看起来很奇怪,但是嵌入在阿拉伯字母中的所有“控制字符”(不确定它们的完整列表)也会从右向左呈现。查看两个示例的字节码:
/Store/عرمنتجات/عرع
2F53746F72652F D8B9D8B1D985D986D8AAD8ACD8A7D8AA 2F D8B9D8B1D8B9
|--------------| |--------------------------------| |--| |------------|
"/Store/" عرمنتجات / i عرع
/Store/عرع/عرمنتجات
2F53746F72652F D8B9D8B1D8B9 2F D8B9D8B1D985D986D8AAD8ACD8A7D8AA
|--------------| |------------| |--| |--------------------------------|
"/Store/" عرع / i عرمنتجات
/Store/عرمنتجات/whatever
2F53746F72652F D8B9D8B1D985D986D8AAD8ACD8A7D8AA 2F 7768617465766572
|------------| |------------------------------| |--| |--------------|
"/Store/" عرمنتجات / whatever
(注意:i
只是为了防止在此处尝试解释的渲染内容)
这也说明了您的测试结果。具体来说,这取决于/
是否有相邻的拉丁字母。