如何使用正则表达式忽略下面表达式中的abc和def,01。我试着忽略我它不起作用。
Abc-def-smdp-01
答案 0 :(得分:1)
一种方法是将原始字符串拆分为前缀,感兴趣的部分和后缀,然后删除词缀中不需要的字符:
$raw = "abc-def-smdp-01";
preg_match ( "/^(.*)(-smdp-)(.*)$/", $raw, $matches ); // separate original string into prefix, trunk, suffix
$matches[1] = preg_replace ( "/[^-]/", "", $matches[1] ); // non-'-' characters deleted in prefix
$matches[3] = preg_replace ( "/[^-]/", "", $matches[3] ); // non-'-' characters deleted in suffixfix
$result = $matches[1].$matches[2].$matches[3]; // composing target string
echo $result;
可在线演示here。
<强> NB 强>
可以通过php函数库的一些知识轻松解决与此问题类似的问题,其中doc within the online php manual附带exakt语法,示例代码和用户注释。
在这种情况下,请查看:
当然,找到适合预期功能的候选人时,至少应该巧妙地掌握可用设施,这使得15分钟浏览hierarchical index明智的时间投入
答案 1 :(得分:0)
我会使用这种模式:
preg_match("/\w+\-\w+\-(\w+)\-\d+/", "Abc-def-smdp-01", $output);
Echo $output[1];
http://www.phpliveregex.com/p/ftB
编辑:或者你需要破折号吗? 在这种情况下,您需要使用此模式:"/\w+(\-)\w+(\-)(\w+)(\-)\d+/"
echo $output[1].$output[2].$output[3].$output[4];
.=
构建一个字符串