Scala正则表达式匹配并分裂

时间:2015-12-03 14:16:23

标签: regex scala

所以这就是我想要做的事情:

输入字符串:"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)

返回一个空数组。我可能错过了什么?

1 个答案:

答案 0 :(得分:0)

由于regexp与字符串匹配,split将删除整个字符串(被视为分隔符) 默认行为不是返回两个空字符串,而是在这种情况下为空数组,如拆分表示所示。

https://stackoverflow.com/a/14602089/1287856

关于为什么你的正则表达式完全匹配,你可能会发现这个网站很有用(它直接关注你的例子)

https://regex101.com/r/zY0lX9/1

Split找到整个正则表达式,并从字符串中删除所有出现的内容,将交错的字符串作为数组返回。您可能希望拆分 contentView.accessibilityElements=@[label,button,textField,imageView]; 之类的内容,以便它不会删除任何内容。