如何使用Regex和diff实用程序(“I Regex”选项)忽略文件的特定行?
我正在编写自动化测试来比较HTML文件。作为比较,我使用 因此,第一个HTML文件如何使用Regex和diff实用程序(“I Regex”选项)忽略文件的特定行?,regex,linux,bash,ubuntu,diff,Regex,Linux,Bash,Ubuntu,Diff,我正在编写自动化测试来比较HTML文件。作为比较,我使用 因此,第一个HTML文件1.HTML 呜呜呜呜 呜呜呜呜 呜呜呜呜 第二个HTML文件2.HTML 布拉布拉布拉布拉布拉差异 呜呜呜呜 布拉布拉布拉布拉布拉差异 Сommand用于比较文件: diff -biw 1.html 2.html 结果: 3c3 < <div id="userdata_hidden">bla bla bla</div> --- > <div id="us
1.HTML
呜呜呜呜
呜呜呜呜
呜呜呜呜
第二个HTML文件2.HTML
布拉布拉布拉布拉布拉差异
呜呜呜呜
布拉布拉布拉布拉布拉差异
Сommand用于比较文件:
diff -biw 1.html 2.html
结果:
3c3
< <div id="userdata_hidden">bla bla bla</div>
---
> <div id="userdata_hidden">bla bla bla DIFFERENCE </div>
5c5
< <div id="waiver_id" >bla bla bla</div>
---
> <div id="waiver_id" >bla bla bla DIFFERENCE </div>
我需要检查字符串是否不包含单词弃权\u id
和userdata\u hidden
如果您不想显示任何一个字符串
^(?!.*\b(?:userdata_hidden|waiver_id)\b)
这看起来真像是“做我的家庭作业”类型的问题…@JérémieAstori Astori,不,我正在用ruby编写自动化测试。尝试用bash
diff
command比较两个HTML和pdf文件这就是当有人甚至没有发布实验就提出解决方案时的情况:-)请包括您迄今为止尝试过的内容及其结果,而不仅仅是从头开始的答案。也就是说,如果性能不是关键因素,而您只有2根针(您的2个字),那么您可以按照的思路使用一些东西!str.match('弃权_id')&&!str.match('userdata_hidden')
并避免自己遭受正则表达式的痛苦…几天后返回,现在这是一个真正的问题:)完成后别忘了选择正确的答案!字符串不应包含这些单词中的任何一个(或代替and),它应该看起来像/^(?。*\bwaiver\u id\b)|(?!.*\buserdata\u hidden\b)$/
,不是吗?@bmalets更改并更改为or@bmalets:不。您的正则表达式毫无意义,因为^
属于第一个分支,$
属于第二个分支。您的意思可能是/^((?!.\bwaiver\u id\b);(?!.\buserdata\u hidden\b))/
,但这是错误的,因为这意味着要么(没有放弃id)要么(没有用户数据隐藏),这意味着允许它们同时出现。@cremno字符串/行的任何部分都可能没有特殊的单词
^(?!.*\bwaiver_id\b)(?!.*\buserdata_hidden\b)
^(?!.*\b(?:userdata_hidden|waiver_id)\b)