Chu*_*tor 5 python regex robotframework
我使用 Robot Framework 进行了自动化测试,该测试将文件读入变量。我正在解析各种日期格式的变量,并尝试使用正则表达式将日期替换为当前日期。
我正在努力让正则表达式在 Robot Framework 中工作(我已经在各种网站上编写了一个正则表达式,比如 pythex 和 regex101,它似乎可以与 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}
Run Code Online (Sandbox Code Playgroud)
当我使用我在示例中提供的正则表达式与 2 个正则表达式网站上提供的字符串时,它们似乎可以完成我需要的一切。当我使用 Robot Framework 运行它们时,它们没有命中。我肯定错过了什么?
Robot 框架将在用作正则表达式之前去除一级反斜杠。请参阅机器人框架用户指南中标题为转义的部分。
因此,如果你的表达式有类似的东西\s,它会在模式匹配器中显示为一个普通的s. 解决方案是用另一个反斜杠(例如:\\s\\d+代替\s\d+)来转义反斜杠。
这是一个简短的通过测试,说明了这一点。
*** Variables ***
${Example String} January 23, 2009
*** Test Cases ***
Example
Run keyword and expect error
... 'January 23, 2009' does not match 'Januarys23'
... Should match regexp ${Example String} January\s23
Should match regexp ${Example String} January\\s23
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9581 次 |
| 最近记录: |