Tag: icu

在NSRegularExpression中命名捕获组 – 获取一个范围的组名

苹果说,NSRegularExpression是基于ICU正则expression式库: https : //developer.apple.com/library/ios/documentation/Foundation/Reference/NSRegularExpression_Class/ 目前支持的模式语法是由ICU指定的。 ICU的正则expression式在http://userguide.icu-project.org/strings/regexp上有描述。 该页面(在icu-project.org上)声称,现在支持命名捕获组,使用与.NET正则expression式相同的语法: (?<name>…)命名的捕获组。 <angle brackets>是文字 – 它们出现在模式中。 我已经写了一个程序,得到一个单一的匹配与多个范围似乎是正确的 – 虽然每个范围返回两次(原因未知) – 但唯一的信息是范围的索引和文本范围。 例如,正则expression式: ^(?<foo>foo)\.(?<bar>bar)\.(?<bar2>baz)$ with test string foo.bar.baz 给我这些结果: Idx Start Length Text 0 0 11 foo.bar.baz 1 0 3 foo 2 4 3 bar 3 8 3 baz 有什么方法可以知道“ baz ”来自捕获组bar2吗?

如何build立ICU,以便在iPhone应用程序中使用它?

我如何configuration和build立ICU,以便将其链接到我的iPhone应用程序? 我正在维护一个使用SQLite数据库的iPhone应用程序。 现在我必须编译启用ICU支持( SQLITE_ENABLE_ICU )。 我有最新的ICU来源。 我正在使用的configure标志: ./configure –target=arm-apple-darwin –enable-static –disable-shared 之后,运行gnumake运行没有错误。 然后我将这些库添加到我的Xcode项目中。 但是当我build立时,我得到了50行: Undefined symbols: "_uregex_close_48", referenced from: _icuRegexpDelete in libsqlite3-cerod.a(sqlite3_cerod.o) "_ubrk_current_48", referenced from: _icuNext in libsqlite3-cerod.a(sqlite3_cerod.o) "_ucol_strcoll_48", referenced from: _icuCollationColl in libsqlite3-cerod.a(sqlite3_cerod.o) "_u_isspace_48", referenced from: _icuRegexpFunc in libsqlite3-cerod.a(sqlite3_cerod.o) "_utf8_countTrailBytes_48", referenced from: _utf8_countTrailBytes_48$non_lazy_ptr in libsqlite3-cerod.a(sqlite3_cerod.o) (maybe you meant: _utf8_countTrailBytes_48$non_lazy_ptr) "_ubrk_next_48", referenced from: _icuNext in […]