标签: nsregularexpression

为什么NSRegularExpression在所有情况下都不尊重捕获组?

主要问题:当我的模式是,时@"\\b(\\S+)\\b",ObjC可以告诉我有六个匹配,但是当我的模式是@"A b (c) or (d)",它只报告一个匹配,"c".

这是一个将捕获组作为NSArray返回的函数.我是一个Objective C新手,所以我怀疑有更好的方法来做笨重的工作,而不是通过创建一个可变数组并在最后将它分配给NSArray.

- (NSArray *)regexWithResults:(NSString *)haystack pattern:(NSString *)strPattern
{
    NSArray *ar;
    ar = [[NSArray alloc] init];
    NSError *error = NULL;
    NSArray *arTextCheckingResults;
    NSMutableArray *arMutable = [[NSMutableArray alloc] init];
    NSRegularExpression *regex = [NSRegularExpression
        regularExpressionWithPattern:strPattern
        options:NSRegularExpressionSearch error:&error];

    arTextCheckingResults = [regex matchesInString:haystack
        options:0
        range:NSMakeRange(0, [haystack length])];

    for (NSTextCheckingResult *ntcr in arTextCheckingResults) {
        int captureIndex;
        for (captureIndex = 1; captureIndex < ntcr.numberOfRanges; captureIndex++) {
            NSString * capture = [haystack substringWithRange:[ntcr rangeAtIndex:captureIndex]];
            //NSLog(@"Found …
Run Code Online (Sandbox Code Playgroud)

regex objective-c nsregularexpression

3
推荐指数
1
解决办法
6005
查看次数

忽略逃脱双引号字符迅速

我正在尝试使用NSPredicate和正则表达式验证电话号码.唯一的问题是当设置正则表达式Swift认为我试图逃避它的一部分由于反斜杠.我怎么能绕过这个?

我的代码如下:

let phoneRegEx = "^((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$"
Run Code Online (Sandbox Code Playgroud)

regex escaping nspredicate nsregularexpression swift

3
推荐指数
1
解决办法
1002
查看次数

捕获的组正则表达式 NSRegularExpression iOS

我正在尝试执行以下正则表达式: ^(\$.)([\d]{1,10})?

https://regex101.com 中$C14325字符串的结果是和。[0-2]:"$C"[2-7]:"14325"

但是,当我使用 执行以下代码时NSRegularExpression,它将作为单个匹配项返回,而不是一个组。

基本上,我试图对这些结果进行分组,并找到一种结果对应于哪个正则表达式的方法。

NSString *regexStr=@"^(\\$.)([\\d]{1,10})?";
NSString *inputStr=@"$C14325";
NSError *regexError;
NSRegularExpression *aRegx=[NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&regexError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];
Run Code Online (Sandbox Code Playgroud)

Named capture groups with NSRegularExpression有答案,但我认为rangeAtIndex如果它无法找到该值会抛出异常。

regex objective-c ios nsregularexpression

3
推荐指数
1
解决办法
1861
查看次数

Swift - 正则表达式匹配括号

我正在尝试使用正则表达式来搜索字符串:"K1B92 (D) [56.094]"我想要抓住"(D)"包含围绕着的括号"D".我无法找到正确的表达式来匹配实际的括号,因为简单地将括号括起来作为一个块并试图逃避括号,"\"使其认为它是一个要评估的表达式.我也试图逃避"\(""\\("像这样:"\\([ABCD])\\)"但没有运气.这是我一直在使用的代码:

let str = "K1B92 (D) [56.094]"

let regex = NSRegularExpression(pattern: "\\b\\([ABCD])\\)\\b", options: NSRegularExpressionOptions.CaseInsensitive, error: nil)

let match = regex?.firstMatchInString(str, options: NSMatchingOptions.WithoutAnchoringBounds, range: NSMakeRange(0, count(str)))

let strRange = match?.range
let start = strRange?.location
let length = strRange?.length

let subStr = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, start!), end: advance(str.startIndex, start! + length!)))

// "\\b\([ABCD])\)\\b" returns range only for the letter "D" without parentheses.
// "\\b\\([ABCD])\\)\\b" returns nil
Run Code Online (Sandbox Code Playgroud)

能引导我走向正确的表达吗?非常感谢你.

regex ios nsregularexpression swift

3
推荐指数
2
解决办法
2870
查看次数

如何查看特定字符串是否与正则表达式模式匹配?

我试图看看特定字符串是否与swift中的正则表达式模式匹配.到目前为止我的代码似乎检查给定字符串中的任何子字符串是否与正则表达式匹配.

let string = " (5"
let pattern = "[0-9]"
if string.rangeOfString(pattern, options: .RegularExpressionSearch) != nil {
        print("matched")
}
Run Code Online (Sandbox Code Playgroud)

上面的代码返回一个匹配项,即使字符串整体与模式不匹配.

我希望代码如何操作:

" (5" -> no match
"(5"  -> no match
"5"   -> match
Run Code Online (Sandbox Code Playgroud)

代码如何运行:

" (5" -> match
"(5"  -> match
"5"   -> match
Run Code Online (Sandbox Code Playgroud)

regex nsregularexpression swift

3
推荐指数
1
解决办法
3053
查看次数

如何使用NSRegularExpression查找用泰语书写的单词

我有一个??????? 用泰语写的单词 - > 如何使用NSRegularExpression来匹配这个单词?我尝试使用确切的单词,但它不起作用.

它甚至没有在像regex101.com这样的网站上工作

这是我的代码(swift版本.但是在swift或obj中的答案很受欢迎).以下代码位于我的playground文件中.我总是变得虚伪,永远不会真实.

let labelString = "???????"
let regex = try NSRegularExpression(pattern: "???????", options: [])
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, options:.ReportProgress, range:NSRange(location: 0, length: labelString.characters.count))
if (!NSEqualRanges(rangeOfFirstMatch, NSRange(location: NSNotFound, length: 0))) {
    print(true)
} else {
    print(false)
}
Run Code Online (Sandbox Code Playgroud)

如果我用"man"这个词替换文本.我总是如此

regex nsregularexpression swift

3
推荐指数
1
解决办法
453
查看次数

swift - 如何删除 NSAttributedString 中的空白(空)行?

我正在制作一个笔记应用程序。我将属性文本保存在 DetailVC 上,并在UITableViewCell 标签中显示预览。

在标签中我有这样的文字

The Bold Title

my Text
Run Code Online (Sandbox Code Playgroud)

我想改变这个

The Bold Title
my Text
Run Code Online (Sandbox Code Playgroud)

我在字符串中找到了解决方案

 let regex = try! NSRegularExpression(pattern: "\n+", options: [])
 let newString = regex.stringByReplacingMatches(in: MyString, options: [], range: NSRange(location: 0, length: MyString.characters.count), withTemplate: "\n")
Run Code Online (Sandbox Code Playgroud)

但我怎样才能在NSATTirbutedString中做到这一点?

请帮忙!

uitableview nsattributedstring ios nsregularexpression swift

3
推荐指数
1
解决办法
3208
查看次数

Azure 安全中心发出高度警报“仅允许容器映像使用受信任的注册表”

我们有 AKS 并使用来自我们的私有 acr 和 dockerhub 映像的映像。可以看到应用于订阅的默认安全策略,以及为可信图像提供高安全漏洞建议。检查后注意到允许容器图像正则表达式指向默认正则表达式 ^(.+){0}$。

这将是此警报的原因?我们如何通过修改正则表达式来确保某些 acr 和 docker hub 镜像的安全

nsregularexpression azure-security azure-aks acr

3
推荐指数
1
解决办法
5520
查看次数

用于各种日期格式的正则表达式iOS

我正在努力绕过一些正则表达式以匹配某些日期格式.理想情况下,我希望一个表达式与每种日期格式匹配,我正在搜索电子邮件中的所有日期.

格式如:

Wednesday, 6 November 2013
Weds 6th November 2013
Weds 6th Nov 2013

06/11/2013
11/06/2013
06/11/13
11/06/13

6th Nov 2013
6th November 2013
Run Code Online (Sandbox Code Playgroud)

有人知道我可以使用的一个表达式吗?

regex date ios nsregularexpression

2
推荐指数
1
解决办法
1616
查看次数

用户名RegEx Swift

用户名regex应该是至少8个字符长的任何字符串。该字符串中可以有@符号,句点,数字或没有。我在下面放置了一些有效和无效的测试用例。我该如何实现?

有效:

user@user.com 
adminuser1 
user.user@user.com 
Run Code Online (Sandbox Code Playgroud)

无效:

user@user.user.com
1adminuser1 
Run Code Online (Sandbox Code Playgroud)

目前我有:

let usernameRegex = "\\A\\w{6,30}\\z"
Run Code Online (Sandbox Code Playgroud)

regex username ios nsregularexpression swift

2
推荐指数
1
解决办法
1593
查看次数