gpt4 book ai didi

regex - Bash "diff"实用程序在使用正则表达式忽略时显示不同的文件

转载 作者:行者123 更新时间:2023-11-29 09:49:19 25 4
gpt4 key购买 nike

我正在尝试使用此处记录的 bash 实用程序“diff”:http://ss64.com/bash/diff.html .请注意,我使用的是 bash 实用程序的 Windows 移植版本,但这应该没有任何区别。

我有两个文件,regex_test_1.txt 和 regex_test_2.txt,它们包含以下内容:

regex_test_1.txt:

// $Id: some random id string $ more text

text that matches

regex_test_2.txt:

// $Id: some more random id string $ more text

text that matches

我试图区分这些文件,同时忽略任何符合此正则表达式的行:

.*\$(Id|Header|Date|DateTime|Change|File|Revision|Author):.*\$.*

但是,当我运行 diff 并告诉它使用 -I 参数忽略与此正则表达式匹配的行时,这是输出:

C:\Users\myname\Documents>diff -q -r -I ".*\$(Id|Header|Date|DateTime|Change|File|Revision|Author):.*\$.*" regex_test_1.txt regex_test_2.txt
Files regex_test_1.txt and regex_test_2.txt differ

我希望它不会发现任何差异(并且不会报告任何内容)。为什么它发现这些文件不同?

最佳答案

这是因为 diff 使用了基本的正则表达式语法,其中某些正则表达式元字符失去了它们的特殊含义:

In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their special meaning; instead use the backslashed versions \?, \+, \{, \|, \(, and \).

这应该有效:

.*\$\(Id\|Header\|Date\|DateTime\|Change\|File\|Revision\|Author\):.*\$.*

关于regex - Bash "diff"实用程序在使用正则表达式忽略时显示不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7520179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com