我用 PHP 编写了一个开源项目,作为练习,我正在创建一个 Objective-C 端口以在 OSX 中作为桌面应用程序运行。
我很难将以下正则表达式从 PHP 转换为 Objective-C。问题是我什至不知道该使用什么类。我尝试使用 NSRange 和 NSRegularExpression,但没有取得多大成功。
这是我的 PHP 代码:
$pattern = '/' .
'([\p{Han}]+)' . // One or more kanji
'(([\p{Hiragana}]*))' . // Hiragana between japanese style parentheses
'/u';
return preg_filter($pattern, '<ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>', $this->_text);
这应该变成这样:
林(はやし)さんは英语(えいご)は话(はな)せます。</p>
进入这个:
<ruby><rb>林</rb><rp>(</rp><rt>はやし</rt><rp>)</rp></ruby>さんは<ruby><rb>英語</rb><rp>(</rp><rt>えいご</rt><rp>)</rp></ruby>は<ruby><rb>話</rb><rp>(</rp><rt>はな</rt><rp>)</rp></ruby>せます。
编辑:
我在Apple Docs中尝试了一些字符串替换示例,但我永远无法正确的部分是实际的正则表达式模式。我不知道如何在 Objective-C 中表示 \p{Han} 和 \p{Hiragana} 子集。
NSError *error = NULL;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"some pattern here"
options:NSRegularExpressionCaseInsensitive
error:&error];