当一行匹配Scala中的子字符串时,拆分多行字符串。下面是相同的代码片段。但我想用适当的正则表达式。
val s1 =
"""
|Hello;
|------------------------------
|GO
|World
|go
|True
| GO
|,I am Naga
|+++++++++++++++++++++++++
|GOTO School
|GO Heaven
"""
s1.split("\n(?i)GO\n")
输出:
Hello;
------------------------------
World
True
,I am Naga
+++++++++++++++++++++++++
GOTO School
GO Heaven
希望在regex中使用^和$来检查,而不是\n
发布于 2017-07-20 03:41:17
你可以用
val key = "GO"
val res = s1.stripMargin('|').split(s"(?mi)^\\s*${key}\\s*$$[\r\n]*")
在首先使用stripMargin('|')
删除缩进后,将应用regex拆分。
模式与匹配
(?mi)
-整个模式不区分大小写,因为i
是不区分大小写的修饰符,m
使^
和$
匹配行的开始/结束,而不是字符串。^
-行的开头\\s*
-0或更多的空白空间${key}
- key
的值(请注意该变量中的逃避任何特殊的字符 )\\s*
-尾随行空白$$
-实际上,它是一行的单个文字$
-末端(由于字符串文字是一个内插的字符串,$
用于引入代码),它是加倍的)。[\r\n]*
-零或更多的CR或/和LF线中断字符。发布于 2017-07-19 19:24:40
s1.split( "(?m)^(\\s*(?i)%s)\\s*$[\r\n]*".format("GO"))
在决赛的最后阶段。
https://stackoverflow.com/questions/45195300
复制相似问题