正则表达式提取子字符串

布莱恩·邓森(M Brian Dunson)

真的为此感到挣扎...希望有人可以让我走上正确的道路。

我的输入字符串的结构如下:

66-2141-A-AC107-7

我对使用单个正则表达式提取字符串“ AC107”感兴趣。我知道如何使用其他PHP字符串函数来执行此操作,但是我必须使用正则表达式来执行此操作。

我需要提取第三和第四连字符之间的所有数据。每个部分的结构不是固定的(即66可以是8798709,而2141可以是38)。确保连字符的数量存在(即,总会有四(4)个连字符)。

任何帮助/指导都将不胜感激!

lix药

这将满足您的需求:

(?:[^-]*-){3}([^-]+)

正则表达式可视化

Debuggex演示

解释:

  • (?:[^-]*-) 查找零个或多个非连字符,后跟一个连字符
  • {3} 寻找刚才描述的三个方块
  • ([^-]+) 从该点开始捕获所有连续的非连字符(将在下一个连字符之前自动切断)

您可以像这样在PHP中使用它:

$str = '66-2141-A-AC107-7';
preg_match('/^(?:[^-]*-){3}([^-]+)/', $str, $matches);
echo $matches[1];  // prints AC107

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章