繁体   English   中英

无法在Objective-C中使用正则表达式

Cannot make regular expression work in Objective-C

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

由于某些原因,我无法使正则表达式适用于多行字符串。 在网路上运作良好

我有这样的文字:

    First Line //remove leading spaces
Second Line //nothing to remove
  Third Line //remove leading spaces
Fourth Line
should be 1 line //remove leading spaces and new line next char is not a capital letter

 Fifth line //remove leading spaces, keep new line between the two sentences 

我正在尝试使用此正则表达式

^ +|\b\n\b

在在线正则表达式编辑器(例如http://rubular.com/r/u4Ao5oqeBi )中,它几乎可以正常工作(除非它删除了多余的新行)

但这只会删除第一行中的前导空格。这是我的代码:

        NSString *myText = @"    First Line (remove leading spaces\nSecond Line (nothing to remove\n  Third Line (remove leading spaces\n Fourth Line\nshould be 1 line (remove leading spaces and new line next char is not a capital letter\n\n Fifth line (remove leading spaces, keep new line between the two sentences";
        NSLog(myText);

        NSString *resultText = [myText stringByReplacingOccurrencesOfString: @"^ +|\\b\\n\\b"
                                                                 withString: @""
                                                                    options: NSRegularExpressionSearch
                                                                      range: NSMakeRange(0, myText.length)];

        NSLog(resultText);
1 个回复

您的代码不起作用,因为您使用的是stringByReplacingOccurrencesOfString ,并且target参数中使用了正则表达式字符串,而不是输入字符串。 它不接受正则表达式。 有关此功能,请参见《 基础框架参考》帮助。

您可以使用以下代码删除所有前导空格:

NSError *error = nil;
NSString *myText = @"    First Line (remove leading spaces\nSecond Line (nothing to remove\n  Third Line (remove leading spaces\n Fourth Line\nshould be 1 line (remove leading spaces and new line next char is not a capital letter\n\n Fifth line (remove leading spaces, keep new line between the two sentences";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^ +" options:NSRegularExpressionCaseInsensitive|NSRegularExpressionAnchorsMatchLines error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:myText options:0 range:NSMakeRange(0, [myText length]) withTemplate:@""];
NSLog(@"%@", modifiedString);

我正在使用NSRegularExpressionAnchorsMatchLines选项使^匹配行的开头,而不是整个字符串的开头(请参见此正则表达式元字符表)。 输出:

First Line (remove leading spaces                                                                                                                                                                                     
Second Line (nothing to remove                                                                                                                                                                                                                         
Third Line (remove leading spaces                                                                                                                                                                                                                      
Fourth Line                                                                                                                                                                                                                                            
should be 1 line (remove leading spaces and new line next char is not a capital letter                                                                                                                                                                 

Fifth line (remove leading spaces, keep new line between the two sentences
3 正则表达式模式在Objective-C中不起作用

我需要检查我的字符串是否匹配此正则表达式模式: \\+?\\d{0,3} (此模式已在此处测试: http : //regexpal.com ,看来还可以。) 这是我的工作: 我希望它能打印出yes ,但由于某种原因它会打印出no 。 也许我弄乱了反斜杠或引号。 我究竟做错了什 ...

4 需要在Objective-C中使用正则表达式

您好,我在为所需的结果创建正确的正则表达式时遇到问题。 我四处张望,独自尝试,但是我被困住了,这就是我现在得到的。 所以我希望有人可以帮助我,谢谢高级 ...

5 Objective-C,正则表达式匹配重复

我在正则表达式中发现一个问题,以匹配所有组重复。 这是一个简单的示例: 返回array具有一个包含两个范围的元素,整个输入字符串和最后一个捕获的组"A3B" 。 我没有捕获前两个组"A1B"和"A2B" 。 我已经尝试了从贪婪到惰性匹配的所有过程。 ...

6 Objective-C中的正则表达式语法

我到处寻找,找不到适用于此的解决方案。 我有: 但是正则表达式不起作用。 我希望它只接受数字和小数。 我知道在使用正则表达式的代码中有一些奇怪的区别,你必须加倍反斜杠或其他东西,但我无法弄明白。 ...

7 Objective-C / Giac-矩阵的正则表达式

我想找到一个正则表达式,以检查给定的字符串是否是矩阵。 Giac库中的矩阵定义如下 [[1,2,3],[4,5,6],[7,8,9]] 以“ [”开始,以“]”结束,每一行(向量)都以“,”分隔。向量以类似的方式定义:[1,2,3]因此,矩阵就像向量的向量。 我创建了一个正则 ...

9 Objective-C正则表达式字符串格式

我正在尝试使用Objective-C的以下正则表达式,但我似乎无法逃脱正确的字符。 我知道我需要逃避\\但不能完全正确。 任何人都可以给我任何指示吗? 我基本上只需要Objective-C格式的格式。 英国电话 英国汽车注册 英国邮编 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM