这是一个一般的正则表达式问题,尽管我将在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+)(.*)$
解释的演示
要同时匹配x
和X
,如果与不区分大小写的regex修饰符i一起使用,也可以使用(x|X)
或仅使用x
。
为什么还要在这上面使用PHP?使用grep的-L
选项可以查找与正则表达式不匹配的文件。
grep -L -- '-d+xd+' *
您必须将regex放在--
之后,这样grep就不会认为regex是命令行选项。