【问题标题】:not able to escape regex using karate framework on IntelliJ [duplicate]无法使用 IntelliJ 上的空手道框架逃避正则表达式 [重复]
【发布时间】:2018-08-23 05:15:22
【问题描述】:

我正在使用 IntelliJ 的空手道框架测试 Web 服务。

根据框架定义,我应该能够使用正则表达式来断言 XML 响应,并且我已经能够在某种程度上使用它。

但是当我想使用包含反斜杠的正则表达式进行断言时,就会出现问题,例如:"\X{20,}" 所以我尝试了:(使用 3 个反斜杠 \\\)

然后匹配响应...... rawData == '#regex \\\X{20,}'

这给了我一个错误:

com.intuit.karate.exception.KarateException:索引 1 附近的转义序列非法/不受支持 \X{20,}

【问题讨论】:

  • Java 正则表达式上下文中的文字反斜杠实际上是连续 四个 反斜杠。基本上,两个反斜杠会给你一个字面上的反斜杠,它本身又需要再次转义。

标签: java regex escaping gherkin karate


【解决方案1】:

正则表达式\\\X{20,} 无效。您的功能文件中需要双反斜杠。

所以\\ 代表一个正则表达式反斜杠(意在转义后面的内容)。如果您想在正则表达式中匹配单个文字 \,则需要在功能文件中添加 \\\\

因此,如果内容应该包含反斜杠,那么您的模式应该是 \\\\X{20,}

这已记录在here

请注意,正则表达式转义必须使用双反斜杠完成 - 例如:'#regex a\.dot' 将匹配 'a.dot'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多