Tag: 正则expression式

我怎么能在Objective-C中正确地转义这个正则expression式?

我有以下的正则expression式我想在Objective-C中转义 /\B\$((?:[0-9]+(?=[az])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/ig; 不完全确定如何逃避它,所以它在Objective-C中的作品 更新: NSString* pattern = @"/\\B\\$((?:[0-9]+(?=[az])|(?![0-9\\.\\:\\_\\-]))(?:[a-z0-9]|[\\_\\.\\-\\:](?![\\.\\_\\.\\-\\:]))*[a-z0-9]+)/ig;"; NSRegularExpression *usernameRegex = [[[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil]; error:nil]; 给我一个关于Parse Issue – Unexpected Identifier的错误

检查一个string在Swift中是否至less包含一个大写字母,数字或特殊字符?

我正在尝试创build一个方法来查找一个string是否包含数字,大写字母和使用正则expression式的特殊字符,如下所示 func checkTextSufficientComplexity(var text : String) -> Bool{ let capitalLetterRegEx = "[AZ]+" var texttest = NSPredicate(format:"SELF MATCHES %@", capitalLetterRegEx) var capitalresult = texttest.evaluateWithObject("AniP") println("\(capitalresult)") let numberRegEx = "[0-9]+" var texttest1 = NSPredicate(format:"SELF MATCHES %@", numberRegEx) var numberresult = texttest1.evaluateWithObject(text) println("\(numberresult)") let specialCharacterRegEx = "[.*&^%$#@()/]+" var texttest2 = NSPredicate(format:"SELF MATCHES %@", numberRegEx) var specialresult = texttest2.evaluateWithObject(text) […]

在为iPhone UITextViewinput(如Twitter)时build议#标签

我会build立一个使用Twitter或Tweetbot等标签的应用程序。 当你input信息时,如果你input了标签符号,我想build议与你正在input的标签匹配的标签。 我已经想出了如何让UITableView出现,并显示标签列表,但我不明白如何做到以下几点: 获取正在键入的当前单词的NSRange , 看看这个范围是否被格式化为一个hashtag( NSRegularExpression @"#\\w\\w*" ) (从这里开始,我已经find了代码来search匹配的标签并在UITableView中显示它们) 任何人都可以帮我步骤1和2? 我一直在考虑使用textViewDidChange:但是我担心如果每次字符改变时我都会不停地运行方法,那么应用程序的性能可能会受到影响。 谢谢!

检查string是否包含Swift中的特殊字符

我必须检测一个string是否包含任何特殊字符。 我如何检查它? Swift支持正则expression式吗? var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789") if (searchTerm!.rangeOfCharacterFromSet(characterSet).location == NSNotFound){ println("Could not handle special characters") } 我尝试了上面的代码,但只有当我input第一个字符作为特殊字符时才匹配。

sed:用换行符在特定模式之后插入行

我们想修改一个plist文件,在匹配一个模式之后,它应该使用sed shell命令插入几行。 plist文件格式如下: <plist> <dict> . . <key>abc</key> <dict> . . </dict> . . </dict> </plist> 我们想要在find第一个字典标记后插入几行。 如果我使用follow命令,它插入文件中的所有字典标记。 sed -i '' "/<dict>/ r template" info.plist 所以,我试图findplist和dict标签,然后插入行。 sed -i '' "/<plist version=\"1.0\">\n<dict>/r template" info.plist 要么 sed -i '' "/\(^<plist version=*.\)/ r template" info.plist 这也不起作用,它无法find文件中的模式。 请build议我怎样才能把一个模式,其中包含由换行符分隔的两个string。

在Swift中使用正则expression式进行简单search时,如何避免由于searchstring中的特殊字符造成的错误?

我正在使用正则expression式在textView中search一个单词。 我实现了一个textField和两个开关作为选项(整个单词和匹配大小写)。 当您在search字段中input一个纯字时,所有的工作都正常,但是当我input一个像\或*这样的特殊字符时,会出现错误。 我得到的错误是这样的: Error Domain=NSCocoaErrorDomain Code=2048 "The value “*” is invalid." UserInfo={NSInvalidValue=*} 有没有办法避免这个问题,并让代码处理像纯文本的所有文本? 因为我也想search特殊字符,所以我宁愿不要阻止input它们。 在开始的时候,我可以用编程的方式在所有特殊字符之前添加一个转义反斜杠来执行search,但也许还有一些更聪明的方法? 这里是我使用的代码(基于本教程: NSRegularExpression教程:入门 ) struct SearchOptions { let searchString: String var replacementString: String let matchCase: Bool let wholeWords: Bool } extension NSRegularExpression { convenience init?(options: SearchOptions) { let searchString = options.searchString let isCaseSensitive = options.matchCase let isWholeWords = options.wholeWords // […]

捕获NSExpression中的NSInvalidArgumentException

在我的代码中,我将string评估为mathexpression式,例如: NSString *formula=@"9*7"; NSExpression *expr =[NSExpression expressionWithFormat:formula]; NSLog(@"%@", [[expr expressionValueWithObject:nil context:nil]intValue]); 上面的工作正常,但我会处理来自用户的dynamicinput,所以我需要能够捕捉到exception,当用户input错误的数据,因此我需要能够捕捉exception情况下,如下所示: NSString *formula=@"9*"; //note the deliberately invalid expression NSExpression *expr =[NSExpression expressionWithFormat:formula]; @try { [[expr expressionValueWithObject:nil context:nil]intValue]; } @catch (NSException *exception) { NSLog(@"Exception"); } @finally { NSLog(@"Finally"); } 但是当我运行这个代码时,我得到: 终止应用程序由于未捕获exception“NSInvalidArgumentException”,原因:“无法parsing格式string”9 * == 1“' 有什么办法来捕捉这个exception? 或者,还有一种方法来testing一个expression式是否有效,然后再将其传递出去? 谢谢!

expression式中的NSExpression自定义variables

最近我发现了NSExpression类,我想知道是否有可能在expression式中评估自定义variables。 像这样的东西: 5+4+MYVAR*5 我想用自定义Double值replace这个MYVARstring。 如果不存在,我会用循环和类似的方式去做,但是希望有一个内置的(和更快的)解决scheme。 谢谢。

iOS:有效的邮政编码检查

问题:如何编写一个函数来检查并返回一个string(NSString)是否包含全球有效的邮政编码。 附加信息:我知道在iOS的RegEx。 不过,我并不那么stream利。 请记住,这应该接受在任何国家有效的任何真实的。 例子 美国 – “10200” 美国 – “33701-4313” 加拿大 – “K8N 5W6” 英国 – “3252-322” 等等 编辑:那些投下来或结束这个问题,请提到为什么。 谢谢。

NSRegularExpression:用<a>标签replaceurl文本

我目前正在使用UIWebView来从twitter中设置风格。 有些微博当然包含URL,但是不包含<a>标签。 我能够拉出的URL,但是我不知道如何添加<a>标签,并放回到鸣叫。 然后,我将使用相同的方法将链接添加到@usernames和#hashtags。 这是我现在的代码的一个例子: NSString *tweet = @"Sync your files to your Google Docs with a folder on your desktop. Like Dropbox. Good choice, Google storage is cheap. http://ow.ly/4OaOo"; NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"(?i)\\b((?:[az][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][az]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”'']))" options:NSRegularExpressionCaseInsensitive error:NULL]; NSString *match = [tweet substringWithRange:[expression rangeOfFirstMatchInString:tweet options:NSMatchingCompleted range:NSMakeRange(0, [tweet length])]]; NSLog(@"%@", match);// == http://ow.ly/4OaOo 最终,我想最后一个string看起来像这样: Sync your files […]