【发布时间】:2019-10-16 20:13:41
【问题描述】:
我有一个这样的输入字符串
val input = """["abc:def&ghi:jkl"]"""
我想提取 abc 和 ghi 所以我写了这个有效的正则表达式
val regex = """(?<=["&])(\w+)(?=[:])""".r
regex.findAllIn(input).foreach(println)
所以基本上我对: 进行了展望,对" 或& 进行了展望。
到目前为止一切顺利。但现在我有这样的输入
val input = """["abc:de_&_f:xyz&ghi:jkl"]"""
匹配
abc
_f
ghi
我想改变我的正则表达式的逻辑说。
当: 的前瞻为真,& 的后视为真,_&_ 为假时,匹配\w+
所以我想同时使用正面和负面的外观。我该怎么做?
【问题讨论】:
-
第二次输入的预期结果是什么?
-
非正则表达式解决方案怎么样? 1) 第一个字符串:
substring(0, index_of_first_colon)。 2) 第二个字符串:substring(index_of_ampersand, index_of_next_colon)。对结果应用过滤器也应该很容易。 -
预期输出与第一个输出相同
-
问题是关于正则表达式的。
-
@KnowsNotMuch 确定。这就是我发表评论的原因。似乎在
:上进行一些简单的过滤可以很容易地产生相同的结果。