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

带有“正则表达式”匹配的查找命令不起作用

颜光临
2023-03-14

我尝试用下面的正则表达式做一个简单的文件名匹配,我测试了从这个页面为示例文件名ABC_YYYYMMDDHHMMSS.sha1工作

ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1

当我在<code>find</code>的<code>-regex</code<标志中结合这一点时

find . -type f -regex "ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1"

该命令未标识路径中存在的文件(例如 ABC_20161231225950.sha1)。我知道此页面中有许多现有的正则表达式类型,但我意识到我的类型是 posix 扩展的并尝试如下,

find . -type f -regextype posix-extended -regex 'ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1'

仍然没有结果。我搜索了一些类似的此类问题,但它们涉及给出错误的正则表达式,导致找不到文件。就我而言,尽管发现正则表达式是正确的。我需要知道我在这里错过了什么。也可能如何在查找中使用 -regex 时调试不匹配的问题。

注意:-我可以对正则表达式中的捕获组进行一些优化,但这不在当前问题的范围内。

共有1个答案

嵇浩然
2023-03-14

添加<代码>。*放在正则表达式的开头,因为您总是会得到类似于< code >的内容。/在路径的开头

find . -type f -regextype posix-extended -regex '.*ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1'
 类似资料:
  • 问题内容: 我正在解析的字符串中可能包含任意数量的带引号的字符串(我在解析代码,并尝试避免使用PLY)。我想找出是否有子字符串被引用,并且我有子字符串索引。我最初的想法是使用re查找所有匹配项,然后找出它们代表的索引范围。 似乎我应该将re与类似的正则表达式一起使用(目前,我避免使用三引号和此类字符串)。当我使用findall()时,会得到一个匹配字符串的列表,虽然有些不错,但我需要索引。 我的子

  • 问题内容: 代码: 错误: 我在这里做错了什么? 问题答案: 你需要调用的,然后才能调用和相关的功能,大约匹配的文本查询或操纵它(,,等)。 因此,在您的情况下: 这将找到第 一个 匹配项(如果有),并提取由正则表达式匹配的第一个捕获组。如果要在输入字符串中查找所有匹配项,请更改为循环。

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 假设我有一本书的书名用 ElasticSearch 索引如下: }’ 例如,我有一本书叫。 以下代码(搜索)可以很好地返回书中: 但是以下代码(搜索)没有: 我试图用或替换空格,但是它也不起作用。 我认为标题以()分隔,因此找不到。 如何要求Elasticsearch在完整标题中搜索regexp? 问题答案: Elasticsearch会将正则表达式应用于令牌生成器针对该字段生成的术语

  • 我们得到了一些这样的内容: