我用 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);
这应该变成这样:
林(はやし)さんは英語(えいご)は話(はな)せます。
进入此:
<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];
最佳答案
这通常是当我踢自己的头时......
事实证明,Objective-C 确实接受 \p{Han}
,只是我必须转义反斜杠,否则它无法识别它!
关于php - 将带有反向引用的正则表达式从 PHP 移植到 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791762/