所以这就是我想要做的事情:
输入字符串:"abc From: blah"
我想拆分它,结果是
["abc" "From: blah"] or ["abc" "From" "blah"
我还有其他几种模式可供选择
["abcd" "To:" "blah"]
等
所以我有以下正则表达式
val datePattern = """((.*>.*)|(.*(On).*(wrote:)$)|(.*(Date):.*(\+\d\d\d\d)?$)|(.*(From):.*(\.com)?(\]|>)?$))"""
val reg = datePattern.r
如果我做了一场比赛,结果就好了。 如果我对同一个正则表达式进行拆分,我会得到一个空列表。
inputStr match {
case reg(_*) => return "Match"
case _ => return "Output: None"
}
在输入字符串上:
"abc From: blah blah"
返回匹配
拆分
inputStr.split(datePattern)
返回一个空数组。我可能错过了什么?
答案 0 :(得分:0)
由于regexp与字符串匹配,split将删除整个字符串(被视为分隔符) 默认行为不是返回两个空字符串,而是在这种情况下为空数组,如拆分表示所示。
https://stackoverflow.com/a/14602089/1287856
关于为什么你的正则表达式完全匹配,你可能会发现这个网站很有用(它直接关注你的例子)
https://regex101.com/r/zY0lX9/1
Split找到整个正则表达式,并从字符串中删除所有出现的内容,将交错的字符串作为数组返回。您可能希望拆分 contentView.accessibilityElements=@[label,button,textField,imageView];
之类的内容,以便它不会删除任何内容。