如何使用Robot框架编写正则表达式来查找/替换各种日期字符串

2024-10-02 02:37:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个自动测试,使用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框架运行它们时,它们没有命中。我一定是错过了什么?在


Tags: 框架getdatetimedatestringrobotyearreplace
1条回答
网友
1楼 · 发布于 2024-10-02 02:37:53

Robot框架在用作正则表达式之前将去掉一级反斜杠。请参见robot框架用户指南中的the section titled Escaping。在

因此,如果表达式有类似\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

相关问题 更多 >

    热门问题