我有一个看起来像这样的字符串,我想提取管道和波形符之间的位。
{>}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/