繁体   English   中英

Java / Scala正则表达式

[英]Java/Scala regex expression

我对正则表达式有点不熟悉。 我有以下几行

val str20 = "unit/virtual-ExtractMe/domain-testing-ExtracMe-IgnoreMe"

我要提取的词是“ ExtractMe”(第一个出现在domain-上方的字符。格式为字符串,一开始将是相同的,但在第二个斜杠后将更改,因此我需要忽略任何内容我的兴趣是获取介于virtual-second /之间的任何内容,在这种情况下,这是单词ExtractMe的第一次出现,例如,如果我有这个

val str20 = "unit/virtual-YouGotMe/domain-testing-ExtracMe-IgnoreMe"

正则表达式应该使我得到“ YouGotMe”这个词,因为它介于virtual- and the second forward slash

/virtual-(.*?)/将为您提供组中的所有匹配项。 您只需要获得第一个。 参见: https : //regex101.com/r/KX9VTt/2

在Scala regex中,不需要对/进行转义,但是如果直接在Java中进行操作,则需要对它们进行转义。

在Scala中,您可以使用findFirstMatchIn提取第一个匹配的组,如下所示:

val pattern = """virtual-(.*?)/""".r

val str20 = "unit/virtual-ExtractMe/domain-testing-ExtracMe-IgnoreMe"

pattern.
  findFirstMatchIn(str20).
  map(_.group(1)).
  getOrElse("Error: No Match!!!")

res1: String = ExtractMe

val str20 = "unit/virtual-YouGotMe/domain-testing-ExtracMe-IgnoreMe"

pattern.
  findFirstMatchIn(str20).
  map(_.group(1)).
  getOrElse("Error: No Match!!!")

res2: String = YouGotMe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM