关于此的很多主题但是我无法弄清楚,寻找一些提示,不应该那么困难。
我有文件名:
test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg
我试图使用正则表达式替换字符_然后从快照开始的所有内容
我得到快照,但我似乎无法了解如何捕捉_的所有出现
(_)(snapshot)(.*)
仅选择1 _
我看了。应该选择"任何单个字符"不确定如何正确使用它或者它是我正在寻找的。
任何指导都会很棒! (这可能是100%的欺骗,但我检查了所有建议的线程,但没有找到解决这个看似简单的问题!)
答案 0 :(得分:2)
尚未发表评论,但要使正则表达式匹配多个匹配项,您需要g - global修饰符。
/(_snapshot.*$|_|\.)/gi
https://regex101.com/r/aI7fF8/2
如果您完全用空格替换所有匹配的出现,请记住修剪最后一个空格。
这里还有一个php样本
<?php
$str = "test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg";
$res = preg_replace(array("/_snapshot.*$/", "/[_.]/"), array("", " "), $str);
print $res; // test file from mpc mp4
答案 1 :(得分:0)
snapshot.*$|[_.]
你可以试试这个。space
。见。演示。
https://regex101.com/r/mT0iE7/13
$re = "/snapshot.*$|[_.]/im";
$str = "test_file_from_mpc.mp4_snapshot_13.29_[2015.05.13_21.10.11].jpg";
$subst = " ";
$result = preg_replace($re, $subst, $str);
答案 2 :(得分:0)
另一种(可能更快但不漂亮)的方式是使用explode()&amp;内爆()。
{% if article.motto %}<p>{{ article.motto | replace("_", "<i>", 1) | replace("_", "</i>" }}</p>{% endif %}