主要问题:当我的模式是,时@"\\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) 我正在尝试使用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) 我正在尝试执行以下正则表达式: ^(\$.)([\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:®exError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];
Run Code Online (Sandbox Code Playgroud)
在Named capture groups with NSRegularExpression有答案,但我认为rangeAtIndex
如果它无法找到该值会抛出异常。
我正在尝试使用正则表达式来搜索字符串:"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)
能引导我走向正确的表达吗?非常感谢你.
我试图看看特定字符串是否与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) 我有一个???????
用泰语写的单词 - > 如何使用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"这个词替换文本.我总是如此
我正在制作一个笔记应用程序。我将属性文本保存在 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
我们有 AKS 并使用来自我们的私有 acr 和 dockerhub 映像的映像。可以看到应用于订阅的默认安全策略,以及为可信图像提供高安全漏洞建议。检查后注意到允许容器图像正则表达式指向默认正则表达式 ^(.+){0}$。
这将是此警报的原因?我们如何通过修改正则表达式来确保某些 acr 和 docker hub 镜像的安全
我正在努力绕过一些正则表达式以匹配某些日期格式.理想情况下,我希望一个表达式与每种日期格式匹配,我正在搜索电子邮件中的所有日期.
格式如:
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应该是至少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 ×8
swift ×6
ios ×5
objective-c ×2
acr ×1
azure-aks ×1
date ×1
escaping ×1
nspredicate ×1
uitableview ×1
username ×1