【问题标题】:Regex and / and " in Scala/GatlingScala/Gatling 中的正则表达式和 / 和 "
【发布时间】:2018-10-03 15:41:08
【问题描述】:

我有一个 html 响应并想在下面保存一个令牌 (bid_kid)

<head>
    <meta name="WT.cg_n" content="Loginsider">
    <meta name="DCSext.loginPage" content="Logg inn - Din side">
    <meta content="no" http-equiv="Content-Language">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script type="text/javascript" src="javascript/xmlhttp.js"></script>
    <link rel="stylesheet" type="text/css" href="_public/gjeff/css/gjeff.css"/>
    <script type="text/javascript" src="_public/gjeff/js/gjeff.min.js"></script>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="static/html5shiv.js"></script>
    <script type="text/javascript" src="static/respond.min.js"></script>
    <![endif]-->
    <script language="JavaScript" src="javascript/dummy_bid20_xxx.js" type="text/javascript"></script>
    <meta name="bid_kid" content="17RA18B5YKIU6A89PIZ6ED0ZYRV1KH">
    <meta name="ajaxurl" content="../no/0/ajax/loginpage-bankid">
    <script src="javascript/init_bid_helper_proto.js" type="text/javascript" defer></script>

    <title>Logg inn - here</title>
</head>

但是,我正在运行的检查在 IntelliJ 中的格式似乎是这样的(添加两个 \):

.check(regex("content=\\\"(?<bid_kid>[0-9A-Z]*)\\\"").find.saveAs("token"))

我是否需要将正则表达式“包装”在一些数学中才能使其在 Gatling/Scala 中工作?

正则表达式使用正则表达式测试器工作,它是这样的:

content=\"(?<bid_kid>[0-9A-Z]*)\"

谢谢!

【问题讨论】:

  • 我收到一个错误:java.util.regex.PatternSyntaxException: 命名捕获组在索引 15 附近缺少尾随 '>' content="(?[0-9A-Z]*) "
  • 使用您的建议使 intellij 在 \" 中的 \ 上“变为橙色”。.check(regex("content=\"(?[0-9A-Z]*)\ "").find.saveAs("bidkid"))
  • 无论 IntelliJ 告诉您什么,您仍然不需要转义 ",但根据您的评论,唯一的问题是您应该从组名中删除 _。将bid_kid 更改为bidkid,或者只是将命名的捕获组替换为一个简单的编号,即regex("content=\"([0-9A-Z]*)\"")

标签: regex scala gatling


【解决方案1】:

累加。对于Java regex documentation,命名组语法不允许下划线:

还可以为捕获组分配一个“名称”,一个命名捕获组,然后稍后通过“名称”进行反向引用。组名由以下字符组成。第一个字符必须是字母。

  • 大写字母“A”到“Z”(“\u0041”到“\u005a”),
  • 小写字母“a”到“z”(“\u0061”到“\u007a”),
  • 数字“0”到“9”(“\u0030”到“\u0039”),

因此,您应该将代码更改为

.check(regex("content=\\\"(?<bidkid>[0-9A-Z]*)\\\"").find.saveAs("token"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多