Regex 斯卡拉。分割行正则表达式返回意外的空字符串
请参见下面的示例。我创建一个多行字符串,然后尝试拆分它。除了第一行,它工作正常。默认情况下,split方法不返回分隔符。因此,我想知道行的开头有什么特别之处,它返回Regex 斯卡拉。分割行正则表达式返回意外的空字符串,regex,scala,Regex,Scala,请参见下面的示例。我创建一个多行字符串,然后尝试拆分它。除了第一行,它工作正常。默认情况下,split方法不返回分隔符。因此,我想知道行的开头有什么特别之处,它返回“”。以及如何更新正则表达式以避免它 scala> val Shakespear = | """ | |To be, | | or not | |to be: | """.stripMargin Shakespear: Stri
“
”。以及如何更新正则表达式以避免它
scala> val Shakespear =
| """
| |To be,
| | or not
| |to be:
| """.stripMargin
Shakespear: String =
"
To be,
or not
to be:
"
scala> Shakespear.split("""[\s]+""")
res3: Array[String] = Array("", To, be,, or, not, to, be:)
谢谢。与其更新正则表达式,不如两端的空格,然后拆分:
Shakespear.trim.split("\\s+")
// res22: Array[String] = Array(To, be,, or, not, to, be:)
至于为什么有一个空字符串,在字符串的开头有一个新行字符,它也被\\s
捕获,拆分它会得到一个空字符串,因为分隔符前面没有任何内容
以下是字符串的原始表示形式(转义借用自):
如果不希望在新行字符上拆分,请改用“”:
Shakespear.split(" ")
//res26: Array[String] =
//Array("
//To", "be,
//", or, not
//to, "be:
//")
Shakespear.split(" ")
//res26: Array[String] =
//Array("
//To", "be,
//", or, not
//to, "be:
//")