我有一个本地化的字符串,看起来在英语中是这样的:正则表达式来提取若干步骤
“
5英里(S)
5,252步骤(S)
”
我的应用程序是以左向右和从右向左语言进行本地化的,因此我不想对step(s)
的排序或关于数字格式的假设(例如5,252可以是5.2 52取决于用户区域设置)。所以,我需要考虑的可能性,可以加入
步骤(S)5.252
以及什么是上面的事。
其他一些注意事项
- 我所知道的是,如果
Step(s)
线就在那里,这将是自己的行(因此在我的正则表达式我需要在绳子的两端。\ n) - 不能保证
Mile(s)
信息将在字符串中可言,更谈不上是否会之前或之后Step(s)
这里是我的方式提取尝试:
NSString *patternString = [NSString stringWithFormat:@"\\n(([0-9,\\.]*)\s*%@|%@\s*([0-9,\\.]*))\\n",
NSLocalizedString(@"Step(s)",nil), NSLocalizedString(@"Step(s)",nil)];
似乎有两个问题:
- Xcode是指示
Unknown escape sequence '\s'
在图案串的第二\s
上述 - 没有球赛被发现甚至对于像以下字符串:
0.2英里(S)
1482步骤(一个或多个)
理想情况下,我会以本地化友好的方式从该字符串中提取1,482
。我应该如何修改我的正则表达式?
我想你也想提取里程。但要澄清,你*只*想要的步骤? – sweaver2112
从右到左在这里是错误的术语。在RTL语言中,数据显示*的方式是数字在单词的右侧,但是**字符的顺序仍然是相同的**:'\ d + \ w +'对于希伯来语将起作用。语言环境仍然可能会优先选择单词后面的数字。一个例子是货币:[20美元对20美元](http://english.stackexchange.com/a/11341/220) – Kobi