regex - 胶水代码中的正则表达式跳过跳过'en'字
问题描述
我有一个 Cucumber 的胶水代码,当字符串 'publiceren' = ' Intern en Extern' 时没有解析正确的字符串:
@En('^de vacature betreft een (.*) voor (.*) en heeft de volgende gegevens: (.*), (.*), (.*), (.*), (.*) en (.*?)$')
def de_vacature_betreft_een_vacaturetype_voor_medewerker(String vacaturetype, String medewerker, String recruiter, String uren, String werkervaring, String opleiding, String achtergrond, String publiceren) {
println(publiceren)
}
我得到的结果只是'Extern',问题似乎是字符串的'en'部分。我该如何解决这个问题?此外,这种方法是否对所有 (.*) 都是正确的?
解决方案
默认情况下,正则表达式是贪婪的,因此捕获组achtergrond
将包含...'publiceren' = ' Intern
. 您要么必须"
在步骤参数周围添加分隔符(即)并将其从捕获中排除,"([^"]*)"
要么使倒数第二个捕获组不贪婪,即(.*?)
。
推荐阅读
- c++ - 设置移动 box2d 对象的线速度(自身速度 + 玩家速度)
- compiler-optimization - 为什么高度优化的编译器不使用 ANDNOT 指令?
- git - 计算一段时间内 PR 的 git 命令行是什么?
- c++ - 枚举 C++ 中的运算符
- html - 如何制作与其背景图像一样大的部分以便完整显示它?
- python - 如何正确使用类中的函数?
- drake - Drake 中 DirectCollocation 的正弦初始轨迹猜测
- android - Delphi android - 从本地前台服务发送数据到应用程序
- javascript - 如何使用带有异步功能的反应钩子“useMemo”?
- mule - 在单个 mule 流中处理多个 If else 条件