php - 将带有反向引用的正则表达式从 PHP 移植到 Objective-C

标签 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];

最佳答案

这通常是当我踢自己的头时......

事实证明,Objective-C 确实接受 \p{Han},只是我必须转义反斜杠,否则它无法识别它!

关于php - 将带有反向引用的正则表达式从 PHP 移植到 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791762/

相关文章:

php - 从命令行脚本填充密码

php - 在 PHP 中使用存储在数据库中的 MySQL 查询

php - 在非对象 MySQLi 上调用成员函数 bind_param()

ios - 如何从 Assets 中获取正确方向的图像

ios - 将 Swift 转换为 Objective-C

mysql - 使用 REGEX 从 MySQL 中的 URL 中提取主机名

ios - 确认密码的正则表达式

php - 从 php 日期获取日期格式如 "Y-m-d H:i:s"

iphone - 从自定义类中获取标签值

python - 如何查找/替换独立单词或带有某些形容词的单词?