Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Ios 正则表达式是否获取由空格分隔的“单词”?_Ios_Regex_Swift_Nsregularexpression - Fatal编程技术网

Ios 正则表达式是否获取由空格分隔的“单词”?

Ios 正则表达式是否获取由空格分隔的“单词”?,ios,regex,swift,nsregularexpression,Ios,Regex,Swift,Nsregularexpression,在IOS、NSRegularExpression中使用什么正则表达式从由空格分隔的字符串中获取单词,即可以是、或、等作为分隔符 因此: "26:43:33 S 153:02:51 E" "26:43:33 S 153:02:51 E" 将提供: 1-"26:43:33" 2-"S" 3-"153:02:51" 4-"E" 1-"26:43:33" 2-"S" 3-"153:02:51" 4-"E" 因此: "26:43:33 S 153:02:51 E

在IOS、NSRegularExpression中使用什么正则表达式从由空格分隔的字符串中获取单词,即可以是、或、等作为分隔符

因此:

"26:43:33 S     153:02:51   E"
"26:43:33 S     153:02:51   E"
将提供:

1-"26:43:33"
2-"S"
3-"153:02:51"
4-"E"
1-"26:43:33"
2-"S"
3-"153:02:51"
4-"E"
因此:

"26:43:33 S     153:02:51   E"
"26:43:33 S     153:02:51   E"
将提供:

1-"26:43:33"
2-"S"
3-"153:02:51"
4-"E"
1-"26:43:33"
2-"S"
3-"153:02:51"
4-"E"
因此,如果要使用正则表达式,则需要查找所有连续的非空间延伸。像这样:

let s = "26:43:33 S     153:02:51   E" as NSString
let pattern = "[^ ]+"
let reg = try! NSRegularExpression(pattern: pattern, options: [])
let matches = reg.matchesInString(s as String, options: [], range: NSMakeRange(0, s.length))
let result = matches.map {s.substringWithRange($0.range)}
// result is: ["26:43:33", "S", "153:02:51", "E"]

作为regex的替代方法,我建议对字符串使用split方法

let string = "26:43:33 S     153:02:51   E"
let words = string.characters.split { $0 == " " }.map { String($0) }

因为对characters属性调用split将返回一个字符类型数组,所以我们需要使用map方法将它们转换回字符串。map将对集合的每个元素执行闭包。在本例中,我们只是使用它将每个元素转换为字符串

为什么要使用正则表达式?我完全同意你的看法。OP特定问题中的用例似乎不必要地使用正则表达式。我的回答只是想说明如果你使用正则表达式,你会怎么做;在更复杂的情况下,我想它可能有用。但是多个空格不会影响它吗?不,它们不会有影响。