我们说我有几个这样的文件
font-normal.otf
font-bold.ttf
etc
我想在破折号后选择这个词,也就是"普通"就是这样。不是.orf。我怎么能这样做?
我有这个,但它也选择.otf部分。
[^-]+$
答案 0 :(得分:2)
正则表达式的问题在于[^-]+
匹配所有内容(连字符除外)直到行尾,而您只想匹配-
到.
。
使用以下正则表达式:
/^.*?([^-]+)\..*$/m
说明:
^
- 在行的开头断言位置.*?
- 匹配除换行符之外的所有字符(懒惰)([^-]+)
- 匹配(并捕获)另外一个非连字符\.
- 匹配文字圆点字符(.
).*
- 匹配其他所有内容,直到行尾(贪婪) $
- 在行尾声明位置
m
- 多行修饰符(使^
和$
在每行的开头和结尾匹配)
代码:
preg_match_all('/^.*?([^-]+)\..*$/m', $text, $matches);
print_r($matches[1]);
输出:
Array
(
[0] => normal
[1] => bold
)
答案 1 :(得分:1)
如果您只是想保持简单,可以选择
$str = file_get_contents("test.txt"); // your file names in test.txt (or pass them with string if you want...)
$string2 = preg_match_all('/-([\w ]+)/', $str, $matches);
现在$ matches [1]数组包含 - 和之间的所有字符串。 (如果它们只是单词字符;如果您需要数字和其他字符,您可以使用适当的regex更改\ w。
使用它来获得正常的'并且'大胆'从你的例子中打印出来。
echo $matches[1][0];
echo $matches[1][1];
答案 2 :(得分:0)