我找不到匹配的RegExKitLite表达式。我正在解析一个字符串,我希望它获取所有内容,直到出现第一个冒号
在RegExKitLite中这样做的表达式是什么?
谢谢!
发布于 2009-07-18 02:08:09
此正则表达式将匹配从开头到(但不包括)第一个冒号的所有内容:
^[^:]*要包含第一个冒号,只需将其放在末尾即可:
^[^:]*:因此,要在RegexKitLite中使用这两种方法之一,您可以这样做:
NSString * firstItem = [someString stringByMatching:@"^[^:]*" capture:0];注意没有括号-因为*是贪婪的,你可以简单地使用被取反的类并使用捕获的组0(即整个匹配)。
值得注意的是,大多数语言都包含允许您使用常规函数执行此操作的函数,例如ListFirst(MyString,':')或MyString.split(':')[0]
我怀疑Objective-C也有类似的东西...是的,请参阅here
NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];发布于 2009-07-18 02:14:01
要专门使用RegexKitLite执行此操作,您需要执行以下操作:
将RegexKitLite.h/.m文件添加到项目中
将RegexKitLite.h导入到需要使用正则表达式的文件中
使用以下命令获取冒号之前的内容:
NSString * everythingBeforeTheColon = [someString stringByMatching:@"([^:]*):" capture:1];发布于 2009-07-18 03:15:42
我刚刚更新了我的SO答案here,所以我想我应该用它来对标准基金会componentsSeparatedByString:和RegexKitLites componentsSeparatedByRegex:进行基准测试。for each循环中的代码行(本质上)是:
NSString *string = @"oop:ack:bork:greeble:ponies";
for() { NSArray *chunks = [string componentsSeparatedByString: @":"]; }
for() { NSArray *chunks = [string componentsSeparatedByRegex: @":"]; }返回的时间为(每次操作的时间以微秒为单位):
componentsSeparatedByString: 3.96810us
componentsSeparatedByRegex: 2.46155us编辑:
我想我会做得更好:如何使用RegexKitLite从包含多行冒号分隔数据(即/ NSArray / NSArrays )的字符串创建密码。根据RegexKitLite文档中的逗号分隔值示例进行了修改。完成后,变量splitLinesArray包含完成的产品。
NSString *theString = @"a:b:c\n1:2:3\nX:Y:Z\n"; // An example string to work on.
NSArray *linesArray = [theString componentsSeparatedByRegex:@"(?:\r\n|[\n\v\f\r\\x85\\p{Zl}\\p{Zp}])"];
id splitLines[[linesArray count]];
NSUInteger splitLinesIndex = 0UL;
for(NSString *lineString in linesArray) { splitLines[splitLinesIndex++] = [lineString componentsSeparatedByRegex:@":"]; }
NSArray *splitLinesArray = [NSArray arrayWithObjects:splitLines count:splitLinesIndex];https://stackoverflow.com/questions/1146464
复制相似问题