4

我正在尝试让我的 NSScanner 尝试扫描以下正则表达式:[a-zA-Z_][a-zA-Z0-9_]*,但遇到了困难。

我可以尝试先阅读 a-Z_,然后尝试附加 a-Z0-9_。

我想知道是否有更简单/更有效的方法来做到这一点。请让我知道,谢谢。


澄清:我不想执行正则表达式。我只是想读取一个看起来像上面的正则表达式的字符串。看起来类似于 C 风格变量的东西。基本上,任何字母数字单词,但不能以数字开头。


说明 2:我正在尝试让扫描仪读取([] 表示每个读取令牌):“test 3”为 [test, 3] “test3”为 [test3] “3test”为 [3, test] “_3test” as [_3test] "_3 test" as [ 3, test] " 3 3test" as [ , 3, 3, test] " 3 test3" as [_, 3, test3]

4

2 回答 2

3

您需要两个字符集:

使用这些将使您能够匹配Unicode 中的所有字母和数字,而不仅仅是英文字母和数字集。如果你真的只想要那些小得多的集合,那么使用characterSetWithCharactersInString:和/或构建它们很容易characterSetWithRange:。如果使用后一种方法,则需要创建一个 NSMutableCharacterSet 并将另一个字符集合并到其中

一旦你有了你的字符集,就可以很容易地只扫描字符集中的字符,然后,如果你愿意,可以将一个字符串连接到另一个字符串上

于 2011-07-06T15:05:03.547 回答
1

这取决于你想做什么。如果你想使用正则表达式,我听说过这个框架: RegexKit

您可以通过字符串、数组、字典等更轻松地应用正则表达式...

于 2011-07-06T07:49:09.030 回答