gpt4 book ai didi

regex - Scala:在正则表达式模式字符串中连接字符串导致问题

转载 作者:行者123 更新时间:2023-12-02 09:17:58 24 4
gpt4 key购买 nike

如果我这样做,它工作正常:

val string = "somestring;userid=someidT;otherstuffs"

var pattern = """[;?&]userid=([^;&]+)?(;|&|$)""".r

val result = pattern.findFirstMatchIn(string).get;

但是我在执行此操作时遇到错误

val string = "somestring;userid=someidT;otherstuffs"

val id_name = "userid"

var pattern = """[;?&]""" + id_name + """=([^;&]+)?(;|&|$)""".r

val result = pattern.findFirstMatchIn(string).get;

这是错误:

error: value findFirstMatchIn is not a member of String

最佳答案

您可以使用插值字符串文字并使用更简单的正则表达式:

val string = "somestring;userid=someidT;otherstuffs"
val id_name = "userid"
var pattern = s"[;?&]${id_name}=([^;&]*)".r
val result = pattern.findFirstMatchIn(string).get.group(1)
println(result)
// => someidT

请参阅Scala demo .

[;?&]$id_name=([^;&]*)模式发现; , ?&然后userId (因为 ${id_name} 被插值)然后 =匹配,然后是 ; 之外的任何 0+ 个字符和&被捕获到返回的组 1 中。

注意:如果您想使用$作为内插字符串文字中字符串 anchor 的结尾,使用 $$ .

另外,请记住Regex.quote("pattern")如果变量可能包含特殊的正则表达式运算符,例如 ( , ) , [等参见Scala: regex, escape string .

关于regex - Scala:在正则表达式模式字符串中连接字符串导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com