如何使用特定模式(语法?)

如何使用特定模式(语法?)

我正在尝试使用 pdfgrep 搜索特定模式的每次出现(必须以 E 或 S 开头),然后后跟 5 位数字(仅)然后执行命令(可能是 mv 命令)

到目前为止,我有以下命令:

pdfgrep -e '[E-S]\d{5,}$' filename.pdf

但无论如何,我都无法在该 PDF 中找到任何内容。搜索特定术语(pdfgrep“term”filename.pdf)确实会返回相关术语,因此我知道 pdfgrep 能够找到它。

我猜我的问题是命令或正则表达式的语法,但我找不到确切的位置......

答案1

你这里有三个问题。首先,字符类的[E-S]意思是“匹配每一个字符S"。要匹配ES,请使用[ES]

接下来,{x,y}BRE(基本正则表达式)不支持设置重复次数的格式,也不支持\d,因此您需要使用该-P标志启用 PCRE(Perl 兼容正则表达式)。这将允许您使用\d“数字”(您在 BRE 中需要[0-9][[:digit:]])以及{x,y}.最后,{5,}意思是“5个或更多”,正好得到你需要的5个{5}

因此,将所有这些放在一起,您正在寻找的命令是:

pdfgrep  -P '[ES]\d{5}$'

相关内容