我对正则表达式还比较新。我一直在尝试分割字符串以获取初始部分的字符串来创建文件夹。
以下是我需要分割的几个变量的示例。
test1-792X612.jpg
test-with-multiple-hyphens-612X792.jpg
是否有一种使用正则表达式的方法可以得到test1
和test-with-multiple-hyphens
?
```
(.*?)-\d+x\d+
这个想法是模式将匹配字符串中的-NumXNum
但捕获先前的内容。请注意不区分大小写标志。
MATCH 1
1. [0-5] `test1`
MATCH 2
1. [18-44] `test-with-multiple-hyphens`
(.*?)-\d+[Xx]\d+
/^(.*)-[0-9]{3}X[0-9]{3}\.jpg$/
< p > (.*)
的值将包含您要查找的部分。
如果可能会有更多或更少的数字,但至少有一个:
/^(.*)-[0-9]+X[0-9]+$\.jpg/
(.*?)-([^-]+\.jpg)$
将会捕获 .jpg
文件中最后一个 -
之前和之后的所有内容。然后,您可以使用 preg_match()
匹配/捕获这些组,并使用 explode()
将 -
拆分成不同的目录。$files = array(
'test1-792X612.jpg',
'test-with-multiple-hyphens-612X792.jpg',
);
foreach($files as $file) {
if(preg_match('/(.*?)-([^-]+\.jpg)$/', $file, $matches)) {
$directories = explode('-', $matches[1]);
$file = $matches[2];
}
}
// 792X612.jpg
// Array
// (
// [0] => test1
// )
//
// 612X792.jpg
// Array
// (
// [0] => test
// [1] => with
// [2] => multiple
// [3] => hyphens
// )
substr("test1-792X612.jpg", 0, -12)
。 - Tony