我有一个看起来像这样的字符串,我想提取管道和代字号之间的位。
{>}D003 S/N|555555~EB
所以解析的结果应该给我555555。这是我尝试过的,但没有成功:
"""\D003 S/N|.*\~""".r.findFirstIn("{>}D003 S/N|555555~EB")
给了我:
Some({>}D003 S/N|555555~)
答案 0 :(得分:2)
您可以将简单的非锚定正则表达式与捕获组一起使用: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组,匹配除~
~
- 文字字母~
。