涉及日语的PHP正则表达式
我的目标是过滤一个MicrosoftWord文档(.docx),其中包含所有日文汉字和假名。 我目前使用的代码如下:涉及日语的PHP正则表达式,php,regex,unicode,preg-match-all,Php,Regex,Unicode,Preg Match All,我的目标是过滤一个MicrosoftWord文档(.docx),其中包含所有日文汉字和假名。 我目前使用的代码如下: preg_match_all('~[\x{4e00}-\x{9faf}]([\x{3040}-\x{309f}]) \= ([a-z]) \=+~u', $data, $matches); 根据一些研究,我发现日语文本的unicode值如下: 我正在处理的数据示例如下所示: 時(とき) = toki=时间;小时;场合;时刻を = wo=标记句子直接宾语的助词(時 = 时间)超え
preg_match_all('~[\x{4e00}-\x{9faf}]([\x{3040}-\x{309f}]) \= ([a-z]) \=+~u', $data, $matches);
根据一些研究,我发现日语文本的unicode值如下:
我正在处理的数据示例如下所示:
時(とき) = toki=时间;小时;场合;时刻を = wo=标记句子直接宾语的助词(時 = 时间)超えて(こえて) = 科特=交叉
我的最终目标是能够以类似的模式运行preg_match_all获取数据,就像”超えて(こえて) = 科伊特”
之前的信息(以及()内部的信息)和之后的罗马化介于之间==
我要查找的结果是返回的数组,如下所示:
array(
0 => array('時', 'とき', 'toki'),
1 => array('超えて', 'こえて', 'koete')
);
每个数组中的第一个结果包括“汉字、平假名,可能还有片假名”虽然第二个结果只有平假名,第三个结果只有普通的字母字符。我对正则表达式和添加Japaense unicode不太在行,我不知道,任何帮助都将不胜感激!谢谢!如果使用
/u
修饰符,您可以使用特殊的unicode正则表达式占位符而不是数字范围:
preg_match_all('/
([\p{Han}\p{Katakana}\p{Hiragana}]+) # Kanji
(?: [(] # optional part: paren (
([\p{Hiragana}]+) # Hiragana
[)] )? # closing paren )
\s*=\s* # spaces and =
([\w\s;=]+) # English letters
/ux',
$source, $matches, PREG_SET_ORDER
);
print_r($matches);
我注意到parens中的平假名是可选的,所以我用(?:…)?
使您的正则表达式更加复杂,它将该部分进行了可选化
请注意,结果顺序有点不同,因为preg_match_all在索引[0]中保留完整的匹配字符串,通常:
[0] => Array
(
[0] => 時(とき) = toki = time; hour; occasion; moment
[1] => 時
[2] => とき
[3] => toki = time; hour; occasion; moment
)