PHP でオープン ソース プロジェクトを作成し、演習として、OSX でデスクトップ アプリとして実行する Objective-C ポートを作成しています。
次の正規表現を 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{ひらがな} サブセットを表現する方法がわかりません。
NSError *error = NULL;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"some pattern here"
options:NSRegularExpressionCaseInsensitive
error:&error];