gluecode skipping skipping 'en' word 中的正则表达式

Regular expression in gluecode skipping skipping 'en' word

我有 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' 部分。 我该如何解决这个问题?此外,这种方法是否对所有 (.*) 都正确?

根据 .* 将采用除新行之外的所有内容,([^\"]*) 这将采用包括新行在内的所有内容。所以,尝试 ([^\"]*).

试试这个:

@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) 
}

默认情况下,正则表达式是贪婪的,因此 achtergrond 的捕获组将包含 ...'publiceren' = ' Intern。您要么必须在步骤参数周围添加分隔符(即 ")并将它们从捕获 "([^"]*)" 中排除,要么使倒数第二个捕获组非贪婪,即 (.*?)