我正试图让我的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 test3”为[_,test3]
解决方法
你需要两个字符集:
> @L_301_0@
> [NSCharacterSet alphanumericCharacterSet]
使用这些将使您能够匹配Unicode中的所有字母和数字,而不仅仅是英文字母和数字集.如果你真的只想要那些更小的集合,它们很容易使用characterSetWithCharactersInString:
和/或characterSetWithRange:
构造.如果使用后一种方法,你需要在其中创建一个NSMutableCharacterSet和union另一个字符集.
一旦你拥有了你的角色,就很容易scan characters only characters within a set然后,如果你想,concatenate one string onto the other.