如何进行小规模的正则表达式修改?

时间:2013-12-19 01:10:30

标签: php regex

关于这个问题:In need of regex assistance,特别是这个正则表达式:“[AZ] {3}(?:\ d {3} - )+ \ d + - ”,什么是最好的方式来容纳而不是只有破折号,>整数组之间的标志?

LHZ345-347>348-349>362>363-LMZ323-342-344-345-346-180100-

应该导致

LHZ345-347>348-349>362>363-
LMZ323-342-344-345-346-180100-

此外,如何在PHP中实现此正则表达式。我的代码行:

preg_match("/[A-Z]{3}(?:\d{3}-)+\d+-/", $string, $array);
当在线验证器在相同的输入字符串上找到它们时,

仅查找字符串的第一个实例。谢谢 - 布兰登

2 个答案:

答案 0 :(得分:0)

preg_match_all("/[A-Z]{3}(?:\d{3}[-\>])+\d+-/", $string, $array);

答案 1 :(得分:0)

要查找某个正则表达式的所有匹配项,您必须使用preg_match_all。使用字符类[->]

在同一位置匹配多个字符
php > preg_match_all("/[A-Z]{3}(?:\d{3}[->])+\d+-/", "LHZ345-347>348-349>362>363-LMZ323-342-344-345-346-180100-", $matches);
php > var_dump($matches);
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(27) "LHZ345-347>348-349>362>363-"
    [1]=>
    string(30) "LMZ323-342-344-345-346-180100-"
  }
}