regex 正则表达式仅在管道直接连接到带有等号的字符串时才拆分字符串

ss2ws0br  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(90)

我的正则表达式技能很低,所以我想知道我是如何实现这个结果的:

test=hey
test2=hey | hey
test3=hey | hey | hey
test4=
test5=bye

基于此字符串:Kotlin内部的test=hey|test2=hey | hey|test3=hey | hey | hey|test4=|test5=bye。之前只有string.split("|"),但遇到了值也可以包含符号的情况|在等号之后。

neskvpey

neskvpey1#

你应该尝试在字符串中匹配这个正则表达式:

\\w+=.*?(?=\\|\\w+=|$)

which you can try here
下面是您的代码的外观:

val text = "test=hey|test2=hey | hey|test3=hey | hey | hey|test4=|test5=bye"
val regex = Regex("\\w+=.*?(?=\\|\\w+=|$)")
val matches = regex.findAll(text)
matches.forEach() {
    result -> println(result.value)
}

说明

\\w+=.*?匹配一个或多个 *word字符 *,后跟等号和零个或多个随机字符
(?=\\|\\w+=|$)是一个积极的前瞻,它确保到目前为止的匹配之后是(a)管道,单词字符,然后是等号,或者(b)字符串的结尾($

警告:这让你的值有无限的管道,但它们不能有一个等号在他们

相关问题