首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当一行与Scala中的子字符串匹配时,拆分多行字符串

当一行与Scala中的子字符串匹配时,拆分多行字符串
EN

Stack Overflow用户
提问于 2017-07-19 15:42:40
回答 2查看 465关注 0票数 0

当一行匹配Scala中的子字符串时,拆分多行字符串。下面是相同的代码片段。但我想用适当的正则表达式。

代码语言:javascript
代码运行次数:0
运行
复制
val s1 =
  """
    |Hello;
    |------------------------------
    |GO
    |World
    |go
    |True
    |            GO
    |,I am Naga
    |+++++++++++++++++++++++++
    |GOTO School
    |GO Heaven
  """
s1.split("\n(?i)GO\n")

输出:

代码语言:javascript
代码运行次数:0
运行
复制
Hello;
------------------------------
World
True
,I am Naga
+++++++++++++++++++++++++
GOTO School 
GO Heaven

希望在regex中使用^和$来检查,而不是\n

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-20 11:41:17

你可以用

代码语言:javascript
代码运行次数:0
运行
复制
val key = "GO"
val res = s1.stripMargin('|').split(s"(?mi)^\\s*${key}\\s*$$[\r\n]*")

Scala演示

在首先使用stripMargin('|')删除缩进后,将应用regex拆分。

模式与匹配

  • (?mi) -整个模式不区分大小写,因为i是不区分大小写的修饰符,m使^$匹配行的开始/结束,而不是字符串。
  • ^ -行的开头
  • \\s* -0或更多的空白空间
  • ${key} - key的值(请注意该变量中的逃避任何特殊的字符 )
  • \\s* -尾随行空白
  • $$ -实际上,它是一行的单个文字$ -末端(由于字符串文字是一个内插的字符串,$用于引入代码),它是加倍的)。
  • [\r\n]* -零或更多的CR或/和LF线中断字符。
票数 1
EN

Stack Overflow用户

发布于 2017-07-20 03:24:40

代码语言:javascript
代码运行次数:0
运行
复制
s1.split( "(?m)^(\\s*(?i)%s)\\s*$[\r\n]*".format("GO"))

在决赛的最后阶段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45195300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档