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

2023-12-23

我使用机器人框架进行自动化测试,将文件读入变量。我正在解析该变量的各种日期格式,并尝试使用正则表达式将日期替换为当前日期。

我正在努力解决的是让正则表达式在机器人框架中工作(我已经在各种网站(如 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}

当我使用示例中提供的正则表达式与两个正则表达式网站上提供的字符串进行比较时,它们似乎可以完成我需要的一切。当我使用机器人框架运行它们时,它们没有得到任何命中。我肯定错过了什么?


机器人框架在将其用作正则表达式之前会去除一级反斜杠。看标题为“逃脱”的部分 http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何利用 Robot Framework 编写正则表达式来查找/替换各种日期字符串 的相关文章

随机推荐

  • Orange Hrm 3.1-向选项卡添加新的菜单标题

    我是 symfony 框架的新手 我使用的是 Orangehrm 3 1 1 我在第二级选项卡中添加了一个新的菜单标题 但我不知道如何导航到特定的 href 链接 请帮我完成步骤 这是我通过数据库添加菜单项的方法 要在 Orangehrm
  • 如何在 Android CalendarView 上仅显示特定月份?

    我想在 CardView 上显示特定月份without下一个和上一个箭头用于导航日历 如果我想显示 2010 年 2 月 用户必须只能看到 2010 年 2 月 他们无法查看下个月或上个月 我跟着this https stackoverfl
  • 通过回溯分割字符串

    我正在尝试编写一个代码 将无空格的字符串分割成有意义的单词 但是当我给出像 arealways 这样的句子时 它返回 a real ways 而我想要的是 are 总是 我的字典包含所有这些词 我怎样才能编写一个不断回溯直到找到最佳匹配的代
  • 在R中绘制图形G=(V,E)

    我想通过 ggplot 或一些 R 内置函数在 R 中绘制标准 G V E 图 我有一个包含顶点坐标的数据框 gt V x y 1 589 3438 6422 883 2 8762 6921 7789 147 3 7973 0883 455
  • 样式显示在 Firefox、Opera、Safari 中不起作用 -(IE7 可以)

    我有绝对的定位div我想在用户单击链接时显示 这onclick链接的调用一个 js 函数 该函数将 div 的显示设置为阻止 也尝试过 inline table cell inline table ETC 这在 IE7 中效果很好 但在我尝
  • 语法高亮显示:Eclipse 如何做到如此快?

    我用 Java 为 Android 开发了一个语法荧光笔 它运行良好 但问题是处理大文件时速度可能会很慢 所以我想知道像 Eclipse 和 Gedit Ubuntu 这样的源代码编辑器如何快速突出显示您刚刚编写的内容 例如 如果您在编写
  • 任何人都知道用 *[class] 标记一个类的目的是什么

    今天我收到了一位客户发来的文件 该文件是电子邮件模板 在移动版本的 css 中 所有类规范均以 class 开头 e g class centertext somespec 0 有人知道将其添加到课程中的目的是什么吗 thanks 有一个雅
  • Base64 编码:非法 Base64 字符 3c

    我正在尝试将 xml 格式的数据解码为字节base64我遇到了问题 我的方法是在java中 它需要一个String数据并将其转换为bytes就像下面这样 String data string of data in xml format by
  • 将 Common Lisp 代码移植到 Clojure

    将 Common Lisp 应用程序移植到 Clojure 有多实用 更具体地说 Common Lisp 中存在哪些 Clojure 中不存在的功能 需要重写 有一个clojure org 上的列表 http clojure org lis
  • Go中如何进行除法运算

    我正在尝试用 Go 进行简单的除法 fmt Println 3 10 这会打印 0 而不是 0 3 这有点奇怪 有人可以分享一下这背后的原因是什么吗 我想在 Go 中执行不同的算术运算 Thanks 二元运算的操作数3 10是无类型常量 规
  • 了解 RTF 并使用 vb.net 进行编辑

    我的 vb net 表单中有这个 RichTextbox 我想当用户单击按钮时 例如加粗所选文本 我将如何执行此操作 另外 我不想使用标准的 vb net 表达式 例如RichTextBox1 SelectedText Font Bold
  • QString 的最大大小

    我在 Ubuntu 16 04 64 位架构上使用 Qt 5 9 我有一个要求 我需要从一个文件中获取输入 该文件的字符范围在 10 8 范围内 不幸的是 将文件分成几部分并进行处理并不是一种选择 因为我需要文件中的全部数据来操作我的代码
  • 如何使用单个 Service Worker 来安装多语言 Angular PWA?

    我已经准备了本地化语言版本的应用程序 为此 我使用了原生 Angular i18n 模块 它准备了两个应用程序包 每个包都有适当的语言 该应用程序的每个版本都可以在我的 nginx 服务器上的单独位置下使用 myapp com en mya
  • Indy 服务器支持 SSL 2,但不应该

    印地德尔福 10 1 柏林 我的客户检查了 HTTPS 连接 使用 Qualys SSL Labs 该报告指出 此服务器支持 SSL 2 以及其他警告 但我猜它们与此相关 使用的代码如下 SSLIOhandler TIdServerIOHa
  • mget 无法像 get 一样获取原始函数

    我可以用get获得原始函数 例如 get Primitive 然而 mget failed mget Error value for not found 为什么 如何解决这个问题 默认为get是使用inherits TRUE 我认为 基于文
  • 获取 ToolStripDropDown 对象的下拉状态

    尽管查看了几次 我在文档中找不到任何返回下拉列表是否打开的简单状态的内容 我想为工具条子菜单创建一个单击事件 该事件将根据其状态打开或关闭项目下拉列表 我可能会忽略它 因为它看起来是一个基本的方法 on the 工具栏下拉菜单 http m
  • 无边框窗口和桌面尺寸相同时闪烁

    我正在尝试创建一个充满屏幕的无边框窗口 http pcgamingwiki com wiki Glossary 3aBorderless fullscreen windowed带有 OpenGL 视口 问题是 当我将窗口和视口设置为与桌面大
  • CI 服务器比较? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在寻找不同的比较持续集成 http en wikipedia org wiki Continuous integration CI 服务器
  • 如何并行执行 2 个 Observable,忽略它们的结果并执行下一个 Observable

    我必须并行执行 2 个 observable 不关心它们的输出 当它们都完成时 gt 运行另一个 observable 这是我的解决方案 但我觉得还有更好的解决方案 rx Observable
  • 如何利用 Robot Framework 编写正则表达式来查找/替换各种日期字符串

    我使用机器人框架进行自动化测试 将文件读入变量 我正在解析该变量的各种日期格式 并尝试使用正则表达式将日期替换为当前日期 我正在努力解决的是让正则表达式在机器人框架中工作 我已经在各种网站 如 pythex 和 regex101 中编写了正