[英]How to construct this regular expression?
如何使用正则表达式忽略下面表达式中的 abc 和 def,01。 我试过忽略我它不起作用。
Abc-def-smdp-01
一种方法是将原始字符串拆分为前缀、感兴趣的部分和后缀,然后删除后缀中不需要的字符:
$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;
此处提供在线演示。
NB
与此类似的问题可以通过了解 php 函数库的一些知识轻松解决,其在线 php 手册中的文档带有 exakt 语法、示例代码和用户注释。
在这种情况下,请查找:
当然,为预期功能找到合适的候选者至少需要对可用设施的敷衍掌握,这使得浏览分层索引的 15 分钟成为明智的时间投资
我会使用这种模式:
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];
或循环它并使用.=
构建一个字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.