问题标签 [pcregrep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
190 浏览

mysql - 带有 REGEXP 的 MySQL CASE 语句不起作用

我想使用一个使用 REGEXP 的 CASE 语句。目前我正在做这样的事情:

它会给出如下错误在此处输入图像描述

如何解决这个问题

0 投票
1 回答
166 浏览

regex - 拆分 pcregrep 多行匹配

tl; dr:如何使用 pcregrep 拆分每个多行匹配?

长版:我有一些文件以(小写)字符开头,有些以数字或特殊字符开头。如果我至少有两行以小写字母开头,我希望在我的输出中使用它。但是,我希望每个发现都被分隔/拆分,而不是相互附加。这是正则表达式:

因此,如果我提供这样的文件:

给出的结果是

然而,我想要的是这样的:

这可能和/或我必须开始使用 Python(或类似的)吗?即使建议从这里开始使用其他东西,首先知道它是否可能仍然会很高兴。

谢谢!

0 投票
0 回答
21 浏览

pcregrep - pcregrep 多行 SQL 匹配

我正在尝试将以下多行 SQL 代码与 pcregrep 匹配:

我想匹配 distinct 和 ('ABCD') 但选择语句中可能有多个属性...如果尝试以下操作:

但我不能说可以有多个换行符

0 投票
0 回答
17 浏览

pcregrep - 如何用 pcregrep 匹配 n 次或更少的东西?

以下命令将突出显示 4 a 而不是 3 a。我只想匹配不超过3个a。我使用的正则表达式有什么问题吗?

0 投票
1 回答
87 浏览

pcre - 使用带有 --color 选项的 pcregrep - 仅突出显示未捕获的表达式?

我想使用 pcregrep 及其 --color 选项来突出显示遵循特定模式的文本:

例如,如果 file.txt 包含:

然后运行:

印刷

鲍勃打招呼
克洛伊打招呼

但我想要的是:

鲍勃打招呼
克洛伊打招呼

有没有办法使用 pcregrep 并让它只突出显示遵循特定正则表达式的文本?

0 投票
1 回答
87 浏览

regex - 为什么这个多行正则表达式包含以下行?

我有以下输入,我想编写一个正则表达式,它将匹配除第一行和最后一行之外的每一行。

我认为以下应该有效,但它不匹配任何东西:

用简单的英语,我将其描述为:查找带有异常文本的行,然后非贪婪地跟随任何字符(包括换行符),直到我们对日期进行肯定的前瞻。

出于某种原因,这也包括最后一行,即使它不在 regex101 上。我在这里想念什么?


在很多情况下,我只会grep -A在这样的情况下使用,但问题是正文可以是任意数量的行。

0 投票
0 回答
63 浏览

c - 如何使用 libpcre2 在纯文本文件中搜索子字符串?

我想使用 libpcre2 来匹配纯文本文件中的子字符串,但 libpcre2 不提供:pcre2_match_file() 或 pcre2_match_fd() API。看来我需要自己打开文件并取每一行并依次传递给 pcre2_match() 函数?

我不确定我是否应该这样做。

除此之外还有更高性能的方式吗?例如使用 mmap() 将文件映射到内存?

我只尝试匹配一个缓冲区并想扩展以匹配整个纯文本文件。

0 投票
1 回答
429 浏览

regex - Bash:如何在某些行中排除某些行?

我有一个看起来像这样的文件:

我想捕获并输出表单的所有ac行,<a line><anything other than an a or c line><c line>因此输出如下所示:

请注意,a: 0开头的c: 4行和结尾的行都没有被捕获,因为它们不遵循我提到的模式。另请注意,删除了和b线之间的线。ac

我一直在尝试使用 Bash 的 pcregrep 进行环视,但还没有找到解决方案。有任何想法吗?

谢谢!

0 投票
2 回答
323 浏览

regex - 为什么我的 pcregrep 正则表达式中的积极前瞻不起作用?

我使用 pcregrep 编写了一个正则表达式,一切都按预期运行,直到我添加了一个积极的前瞻。

设想:

我有以下文本文件:

目标:

我想使用带有 pcregrep 的正则表达式来返回一个包含的行a和一个包含的行,其中包含c一个捕获的行。所以它会捕获前三行 ( , , ) 并返回第一 ( ) 和第三 ( ) 行。它不会捕获第四行和第五行,因为它们之间没有线。所以输出将是:babcacb

我试过的

如果我运行pcregrep -M 'a\nb\nc\n'命令 1),这将捕获并返回:

正如预期的那样。所以我现在想修改它以捕获b具有积极前瞻的行。我试过这个:(pcregrep -M 'a\n(?=(b\n))c\n'命令2)。但是,这不会返回任何内容。

我的问题:

为什么命令 2不返回预期的输出,而命令 1呢?如何返回所需的结果?我知道除了 之外还有其他方法可以做到这一点pcregrep,但请注意我想使用它,pcregrep因为我将扩展功能以解决类似问题。

谢谢!

0 投票
1 回答
50 浏览

regex - 为什么这个正则表达式没有捕获两个匹配的行?

我有以下文本文件:

我正在尝试匹配以a使用以下命令开头的行:pcregrep -M '^a'. 它只匹配第一个a而不匹配第二个。有谁知道为什么?我使用pcregrep它是因为这是一个简单的问题,稍后我将扩展到更复杂的场景。

谢谢!

更新

原因是我使用的是 Mac OS,其中每个换行符都是回车符。因此,pcgrep 将文件内容(即 a\ra)解释为一行,并且我的正则表达式仅返回a该行的第一行,因为这就是我在表达式中指定的全部内容。使用 pcregrep 的解决方案是指定换行符类型。“换行类型”是指正则表达式引擎解释为指定行尾的字符。因此,如果我们在这种情况下指定换行符类型为回车符 (\r),pcregrep 会将我的文件内容解释为两行,并将匹配并返回两行。

我的正则表达式的固定版本是pcregrep -M -N CR '^a',其中的-N CR意思是“换行符类型是回车”。