regex - Scala 分割字符串正则表达式模式

标签 regex scala

我有一个看起来像这样的字符串,我想提取管道和波形符之间的位。

{>}D003 S/N|555555~EB

所以解析的结果应该返回 555555。这是我尝试过的,但没有成功:

"""\D003 S/N|.*\~""".r.findFirstIn("{>}D003 S/N|555555~EB")

这给了我:

Some({>}D003 S/N|555555~)

最佳答案

您可以使用带有捕获组的简单非锚定正则表达式:D003 S/N\|([^~]+)~ .

请参阅Scala demo :

val rx = """D003 S/N\|([^~]+)~""".r.unanchored
val s = "{>}D003 S/N|555555~EB"
val res = s match { 
    case rx(c) => c
    case _ => ""
}
println(res)

图案详细信息:

  • D003 S/N\| - 匹配文字字符序列 D003 S/N|
  • ([^~]+) - 捕获组 1 匹配除 ~ 之外的 1 个或多个字符
  • ~ - 文字字符 ~

关于regex - Scala 分割字符串正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482258/

相关文章:

这个while循环代码中的Scala古怪

javascript - 允许某些特殊字符,但必须是字母数字

用于匹配文档 block 内的 JSDoc 标记的 Javascript 正则表达式

javascript - 以 0. 开头并以 ] 结尾的字符串的正则表达式?

java - 电话号码正则表达式

scala - 如何在 SCALA 中将 Long 转换为 Duration(导入 scala.concurrent.duration)

scala - 从 Actor 向调用者发送 None

scala - Play Framework 2.1.1 不解决依赖关系

scala - Scala中如何根据三列过滤数据

java - 在java中用<br/>替换\n和\r\n