我正试图让我的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]
答案 0 :(得分:3)
您需要两个字符集:
使用这些将使您能够匹配Unicode中的所有字母和数字,而不仅仅是英文字母和数字集。如果你真的只想要那些更小的集合,那么使用characterSetWithCharactersInString:
和/或characterSetWithRange:
就可以轻松构建它们。如果使用后一种方法,则需要在其中创建一个NSMutableCharacterSet和union另一个字符集。
一旦你拥有了你的角色,就很容易scan characters only characters within a set,然后,如果你愿意,concatenate one string onto the other。
答案 1 :(得分:1)
这取决于你想做什么。 如果你想使用regexp,我听说过这个框架: RegexKit
您可以通过字符串,数组,字典等更轻松地应用正则表达式...