Regex “需要”;正则表达式;拒绝/要求参数双重发生的

Regex “需要”;正则表达式;拒绝/要求参数双重发生的,regex,Regex,不幸的是,我的处境是需要使用“正则表达式”。问题是,我找不到任何资源来解释如何用我能理解的基本语言使用它们。现有的资源在我头上滔滔不绝,让我不知所措 我正在使用一个第三方软件,它有一个注册表项。我不确定它实际使用的是哪个正则表达式引擎 我需要的是: 一个表达式,它将返回以特定字符串开头的结果(例如“C:\TEMP\\捕获”),用几个特定的结尾之一结束(例如,“.exe”、“.dll”或“.cabl”)-但不包含结果中间的任何结尾! e、 例如,对于列表: C:\Temp\Captures\One

不幸的是,我的处境是需要使用“正则表达式”。问题是,我找不到任何资源来解释如何用我能理解的基本语言使用它们。现有的资源在我头上滔滔不绝,让我不知所措

我正在使用一个第三方软件,它有一个注册表项。我不确定它实际使用的是哪个正则表达式引擎

我需要的是:

一个表达式,它将返回以特定字符串开头的结果(例如“C:\TEMP\\捕获”),用几个特定的结尾之一结束(例如,“.exe”、“.dll”或“.cabl”)-但不包含结果中间的任何结尾! e、 例如,对于列表:

C:\Temp\Captures\One.dll.dll
C:\Temp\Captures\Two.exe
C:\Temp\Captures\Three.cab.howdy.exe
C:\Temp\Captures\Four.cab
C:\Temp\Captures\Five.dll
C:\Temp\Captures\Six.cab.cab
表达式将返回所有行的结果,但在文本超出第一个.exe、.dll或.cab的行中,它将删除后面的所有内容,只返回指向并包含这些第一个“结束”表达式的文本

换句话说,其结果将是:

C:\Temp\Captures\One.dll
C:\Temp\Captures\Two.exe
C:\Temp\Captures\Three.cab
C:\Temp\Captures\Four.cab
C:\Temp\Captures\Five.dll
C:\Temp\Captures\Six.cab
我需要的第二个表达式与此类似,只是它必须仅返回以其中一个已批准的结尾(即“.exe”、“.dll”、“.cab”)结尾的行,这些结尾是在已经出现其中一个结尾之后出现的

换句话说,在上面的列表中,它将只返回结果:

C:\Temp\Captures\One.dll.dll
C:\Temp\Captures\Three.cab.howdy.exe
C:\Temp\Captures\Six.cab.cab

正则表达式根据目标语言甚至目标语言的版本而变化,因此,在不知道这一点的情况下,我们向您展示的任何表达式都可能无法正常工作

然而,以下是一个可能适用于您的第一个请求的示例:

C:\\Temp\\Captures\\\S*?(?:(?:\.exe)|(?:\.cab)|(?:\.dll))

对于第一个列表,您可以使用:

意思是在一行(
^
)后面加上任何内容,但尽可能少(
*?
),后面加上一个点(
\.
)和一个扩展名(
(?:cab | dll | exe)

要检索具有两个扩展名的元素,可以使用:

意思是一行包含['anything'(
*
),后跟一个点(
\.
),后跟一个扩展名(
(?:cab | dll | exe)
)]至少两次(
{2,}


如果您的工具与PCRE正则表达式兼容

也许您应该告诉我们您的目标语言是什么。不是所有的正则表达式都一样,我不知道。这是一个第三方软件,它似乎可以使用“正则表达式”。我以前从未听说过他们这里是一个很好的起点:没有你的目标语言或方言,我们无法帮助你。这是你应该知道的第一件事。