如何使用NSScanner以^ [a-zA-Z _]的形式进行扫描[a-zA-Z0-9 _] *

时间:2011-07-06 03:44:20

标签: cocoa nsscanner

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

我可以尝试首先读取a-Z_,然后尝试追加a-Z0-9 _。

我想知道是否有更简单/更有效的方法。请让我知道,谢谢。


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


澄清2: 我试图让扫描仪读取([]表示每个读取令牌):  “测试3”为[测试,3]  “test3”为[test3]  “3测试”为[3,测试]  “_3test”为[_3test]  “_3测试”为[ 3,测试]  “ 3 3test”为[,3,3,test]  “ 3 test3”为[_,3,test3]

2 个答案:

答案 0 :(得分:3)

您需要两个字符集:

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

一旦你拥有了你的角色,就很容易scan characters only characters within a set,然后,如果你愿意,concatenate one string onto the other

答案 1 :(得分:1)

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

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