我有一个自动测试,使用Robot框架将文件读入变量。我正在为各种日期格式解析该变量,并尝试使用正则表达式将日期替换为当前日期。在
我正在努力让一个regex在Robot框架中工作(我在pythox和regex101等不同的网站上编写了一个regex,它似乎可以根据我的需要使用Python)。在
${date}= get current date
${datetime}= convert date ${date} datetime
${MonthList}= create list January February March April May June July August September October November December
${monthName}= get from list ${MonthList} ${datetime.month-1}
${ExpectedFileAsString}= set test variable January 23, 2009 May 1, 2020 05/21/1990 05/1/1990 5/21/1990 5/2/1990
${ExpectedFileAsString}= replace string using regexp ${ExpectedFileAsString} ([A-Z][a-z]+\s\d+,\s\d\d\d\d) ${monthName} ${datetime.day}, ${datetime.year}
${match1}= get regexp matches ${ExpectedFileAsString} [A-Z][a-z]+\s\d+,\s\d\d\d\d
log matches 1: ${match1} console=yes
${match2}= get regexp matches ${ExpectedFileAsString} [A-Z][a-z]{2,8}\s\d{1,2},\s\d{4}
log matches 2: ${match2} console=yes
${ExpectedFileAsString}= replace string using regexp ${ExpectedFileAsString} ([A-Z][a-z]{2,8}\s\d{1,2},\s\d{4}) ${monthName} ${datetime.day}, ${datetime.year}
${ExpectedFileAsString}= replace string using regexp ${ExpectedFileAsString} (?<![/\d])\d{1,2}/\d{1,2}/\d{4}(?![/\d]) ${datetime.month}/${datetime.day}/${datetime.year}
当我使用我在我的例子中提供的正则表达式对2个正则表达式网站上提供的字符串,它们似乎做了我需要的一切。当我使用Robot框架运行它们时,它们没有命中。我一定是错过了什么?在
Robot框架在用作正则表达式之前将去掉一级反斜杠。请参见robot框架用户指南中的the section titled Escaping。在
因此,如果表达式有类似
\s
的内容,它将在模式匹配器中显示为一个普通的s
。解决方案是用另一个反斜杠来转义反斜杠(例如:\\s\\d+
而不是\s\d+
)。在下面是一个简短的通过测试来说明这一点。在
相关问题 更多 >
编程相关推荐