0

这是一个一般的正则表达式问题,尽管我会在 PHP 中应用它。

我正在尝试查找所有不包含类似-123x456-12345x678表示格式始终为-INTx的字符串的文件INT。(如图像分辨率)。

该字符串是文件名的一部分。并且“constsnts”是字符串前面的减号( - )和中间的X(可以是大写字母也可以不是)

在THIS的帮助下,我们提出了以下表达式:

^(?:(?!STRING).)*$

或者在我的情况下:

^(?:(?!x).)*$

但这将排除所有包含x

x当不知道它们有多少位数字时,如何在两侧添加数字,但知道在文件名之前或之后可能有一个数字是文件名的一部分

(例如myfile-x1-456x789 VR。myfile-x12

我需要一个单独的解决方案来解决x特定的问题,或者X | x ......

4

2 回答 2

1

您可以使用反向搜索(在 linux 上使用grep工具和-v--invert-match参数)或 @mario在 PHP 中使用preg_grep()建议。

要回答您的问题,请使用此 RegEx:^(?!.*?-\d+[xX]\d+)(.*)$ 解释演示

要匹配两者xX您也可以使用(x|X)或仅x与不区分大小写的正则表达式修饰符i一起使用。

于 2013-03-19T02:02:06.137 回答
0

为什么还要在这上面使用 PHP?使用 grep 的-L选项来查找与正则表达式不匹配的文件。

grep -L -- '-\d+x\d+' *

您必须将正则表达式放在 a 之后,--以便 grep 不会认为该正则表达式是命令行选项。

于 2013-03-19T04:50:54.783 回答