端口正则表达式,从PHP到Objective-C的反向引用

时间:2012-12-09 20:58:35

标签: php objective-c regex

我用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];

1 个答案:

答案 0 :(得分:3)

这通常是我把自己踢到脑袋的时候......

事实证明,Objective-C接受\p{Han},除了我必须逃避反斜杠,否则它没有认出来!