当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式的 bash 查找不区分大小写

糜鸿风
2023-03-14

我需要查找以三个小写字母开头的文件,但由于某种原因,我遇到了不希望的不区分大小写的行为。我正在使用带有 -regex 选项的查找,但它甚至可以找到以大写字母开头的文件。

$ find . -regextype posix-egrep -regex '.*/[a-z]{3}\w+\.abc'
./TTTxxx.abc
./tttyyy.abc

打印内容与以下内容相同:

$ find . -regextype posix-egrep -regex '.*/[A-Z]{3}\w+\.abc'
./TTTxxx.abc
./tttyyy.abc

如果我不使用一系列字符,而是使用一个字符,则工作方式与敏感字符相同,只打印小写文件。

find . -regextype posix-egrep -regex '.*/[t]{3}\w+\.abc'
./tttyyy.abc

我尝试过使用不同的正则表达式类型,结果是相同的。

此外,白鹭似乎也起作用:

find . -regextype posix-egrep -regex '.*/.+\.abc' |  egrep '/[a-z]\w+\.abc'
./tttyyy.abc

为什么在使用字符范围时“find-regex”不区分大小写?

注意:我需要使用 find,因为我需要 -exec 选项。

非常感谢。

共有1个答案

百里嘉泽
2023-03-14

根据bash中[A-Z]为什么匹配小写字母?,排序是这里的问题:

带有区域设置(如en_US)的标准排序规则具有以下顺序:

aAbBcC...xXyYzZ

在< code>a和< code>z之间(在< code>[a-z]中)都是大写字母,除了< code>Z。在< code>A和< code>Z之间(在< code>[A-Z]中)都是小写字母,除了< code>a。

因此,您需要显式列出所有小写字母或更改排序规则:$导出LC_COLLATE=C并使用标准[a-z]

<代码>[...]{3}\w\abc -此模式,其中< code>[...]是< code>[a-z]或小写字母列出,将获得您的文件名。

 类似资料:
  • 问题内容: 我想使用JavaScript从我的URL中提取查询字符串,并且想要对查询字符串名称进行不区分大小写的比较。这是我在做什么: 但是上面的代码进行区分大小写的搜索。我尝试过,但没有帮助。知道如何实现吗? 问题答案: 您可以添加“ i”修饰词,表示“忽略大小写”

  • 问题内容: 我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持使用方法,但是没有用。 输出: 问题答案: 您需要将模式中要区分大小写的部分放在 前面 : 看见 我已将要删除的关键字周围的空格替换为单词边界()。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。 如果仅当关键字被 空格 包围时才想删除它们,则可以使

  • 问题内容: 在Python中,我可以使用以下命令将正则表达式编译为不区分大小写: 有没有办法做同样的事情,但是不用。在文档中找不到Perl的后缀(例如)。 问题答案: 传递到的PARAM ,或:

  • 问题内容: 现在,当然,我可以编写正则表达式来处理这两种情况,例如,但是我的正则表达式是由用户提供的字符串构造的: 名字在哪里。可能类似于“西北偏北”。现在,对我来说,最明显的解决方案是遍历每个字符,并为每个字母写“ [nN]”: 但是我觉得这是一个不太优雅的解决方案。速度并不是真正的问题,但是我需要知道是否还有另一种方法。 问题答案: 您可以将不区分大小写的标志设置为正则表达式中的第一项。 您可

  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 问题内容: 我真的很希望能够允许Beautiful Soup匹配任何标签列表,就像这样。我知道attr接受正则表达式,但是美丽的汤中有什么可以让您这样做的? 输出: 我的目标是创建一个可以从站点抓取表格的刮板。有时标签的名称不一致,我希望能够输入标签列表来命名表的“数据”部分。 问题答案: 是Beautiful Soup搜索API中最受欢迎的方法。 您可以传递各种过滤器。另外,传递列表以查找多个标