繁体   English   中英

如何构造这个正则表达式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM