PHP-(Regex)-查找不包含-num X num



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

我正在尝试查找所有不包含像-123x456-12345x678这样的字符串的文件,这意味着格式始终是-INT x INT。(如图像分辨率(。

此字符串是文件名的一部分。"constsnts"是字符串前面的减号(-(,中间的X(可以是大写字母,也可以不是(

在THIS的帮助下,我们想出了一个表达式:

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

或者在我的情况下:

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

但这将排除所有包含x 的文件名

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

(例如myfile-x1-456x78 9 VR.myfile-x12(

我需要一个单独的解决方案x在具体,或X | x。。。

您可以使用反向搜索(在带有grep工具和-v--invert-match参数的linux上(,也可以使用PHP中preg_grep((中@mario建议的方法。

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

要同时匹配xX,如果与不区分大小写的regex修饰符i一起使用,也可以使用(x|X)或仅使用x

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

grep -L -- '-d+xd+' *

您必须将regex放在--之后,这样grep就不会认为regex是命令行选项。

最新更新