我需要帮助匹配@mentions单词,该单词本身包含一些ID,这些ID将用于将用户重定向到特定的userId。
这是我的字符串:
val string = "Hello @[%user%]Akash(ef54321). Is @[%user%]Shubham(45321gg) there with you?"
我需要解析的响应==“你好@Akash。@Shubham和你在一起吗?
@Akash和@Shubham的onClick我也需要ID(xxxxx)格式的ID。@ mentions应该以灰色背景显示。任何帮助将不胜感激。谢谢, 我正在使用
val string = "Hello @[%user%]Akash(54321).Is @[%user%]Shubham(543215) there with you "
val matcher = Pattern.compile("^[@]\\w+|(?<=\\s)[@]\\w+").matcher(string)
while (matcher.find()) {
println("TAG"+matcher.group())
}
答案 0 :(得分:1)
您可以使用
val string = "Hello @[%user%]Akash(ef54321). Is @[%user%]Shubham(45321gg) there with you?"
val rx = Regex("""@\[%user%](\w+)\((\w+)\)""")
val res = string.replace(rx, "@$1")
println(res) // => Hello @Akash. Is @Shubham there with yo?
val users =rx.findAll(string).map{it.groups[1]!!.value}.toList()
val ids =rx.findAll(string).map{it.groups[2]!!.value}.toList()
println(users) // => [Akash, Shubham]
println(ids) // => [ef54321, 45321gg]
请参见Kotlin demo。
@\[%user%](\w+)\((\w+)\)
正则表达式包含两个用于用户和ID的捕获组。在替换方法中,您可以使用$1
和$2
占位符来引用这些值。
模式详细信息
@\[%user%]
-一个@[%user%]
文字字符串(\w+)
-捕获组1(用户$1
):一个或多个字母,数字或下划线\(
-一个(
字符(\w+)
-捕获组2(ID,$2
):一个或多个字母,数字或下划线\)
-一个)
字符。