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