Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Swift中查找特殊字符包裹的子字符串_Arrays_Swift_Regex_String_Swift3 - Fatal编程技术网

Arrays 在Swift中查找特殊字符包裹的子字符串

Arrays 在Swift中查找特殊字符包裹的子字符串,arrays,swift,regex,string,swift3,Arrays,Swift,Regex,String,Swift3,我有这个字符串: let string = "Users: [Ricky], [Bob], [Jane]" 我试着用括号括起来的单词组成一个字符串数组(例如[“Ricky”,“Bob”,“Jane”]) 问题:如何对结果进行子串和迭代? Regex是正确的选择吗 let string = "Users: [Ricky], [Bob], [Jane]" let pattern = "/[(.*?)]/" let regex = try! NSRegularExpression(pattern:

我有这个字符串:

let string = "Users: [Ricky], [Bob], [Jane]"
我试着用括号括起来的单词组成一个字符串数组(例如
[“Ricky”,“Bob”,“Jane”]

问题:如何对结果进行子串和迭代?

Regex是正确的选择吗

let string = "Users: [Ricky], [Bob], [Jane]"
let pattern = "/[(.*?)]/"
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.matches(in:string, range:NSMakeRange(0, string.utf8.count))

以下模式是您需要的:

let pattern = "\\[([^]]*)\\]"
\\[
-文字
[

[^]]*
-除
]

\\]
-文字
]

只有在需要引用方括号内的文本时才需要
()

以下是完整的工作代码:

let string = "Users: [Ricky], [Bob], [Jane]"
let pattern = "\\[([^]]*)\\]"
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.matches(in:string, range:NSMakeRange(0, string.utf8.count))
let names = result.map { (string as NSString).substring(with: $0.range(at: 1)) }
print(names)
输出:

[“瑞奇”、“鲍勃”、“简”]


以下模式是您需要的:

let pattern = "\\[([^]]*)\\]"
\\[
-文字
[

[^]]*
-除
]

\\]
-文字
]

只有在需要引用方括号内的文本时才需要
()

以下是完整的工作代码:

let string = "Users: [Ricky], [Bob], [Jane]"
let pattern = "\\[([^]]*)\\]"
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.matches(in:string, range:NSMakeRange(0, string.utf8.count))
let names = result.map { (string as NSString).substring(with: $0.range(at: 1)) }
print(names)
输出:

[“瑞奇”、“鲍勃”、“简”]


Try
let pattern=“(?Try
let pattern=“\[(.*?\]”)也
NSRange
以UTF-16代码单位计数,因此
NSMakeRange(0,string.utf16.count)
将我的正则表达式与来自的代码一起使用。应该注意的是,副本只有两个(低投票)适用于此问题的答案,但没有一个有助于此问题的OP确定正确的正则表达式需要是什么。@rmaddy,MartinR的答案提供了除模式之外所需的所有内容。我重新打开了它,因为您的模式和您的所有代码都有效。Try
let pattern=“(?Try
let pattern=”\[(.*)\]“
。另外,
NSRange
以UTF-16代码单位计数,因此
NSMakeRange(0,string.utf16.count)
将我的正则表达式与来自的代码一起使用。应注意,副本只有两个(低投票)适用于此问题的答案,但没有一个可以帮助此问题的操作确定正确的正则表达式需要是什么。@rmaddy,MartinR的答案提供了除模式之外所需的所有内容。我重新打开它,因为您的模式和所有代码都可以工作。