我的正则表达式技能很低,所以我想知道我是如何实现这个结果的:
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("|"),但遇到了值也可以包含符号的情况|在等号之后。
test=hey|test2=hey | hey|test3=hey | hey | hey|test4=|test5=bye
string.split("|")
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)字符串的结尾($)
\\w+=.*?
(?=\\|\\w+=|$)
$
警告:这让你的值有无限的管道,但它们不能有一个等号在他们
1条答案
按热度按时间neskvpey1#
你应该尝试在字符串中匹配这个正则表达式:
which you can try here。
下面是您的代码的外观:
说明
\\w+=.*?
匹配一个或多个 *word字符 *,后跟等号和零个或多个随机字符(?=\\|\\w+=|$)
是一个积极的前瞻,它确保到目前为止的匹配之后是(a)管道,单词字符,然后是等号,或者(b)字符串的结尾($
)警告:这让你的值有无限的管道,但它们不能有一个等号在他们