PHP中的快速正则表达式模式

时间:2015-07-03 14:07:01

标签: php regex

我有大量的文本字符串,我需要提取符合以下模式的所有文本:

QXXXXX-X(其中X可以是任何数字,0-9)。

我如何在PHP中执行此操作?

<?php
preg_match_all("","Q05546-8 XXX Q13323-0",$output,PREG_PATTERN_ORDER);
print_r($output);
?>

1 个答案:

答案 0 :(得分:0)

你走了:

preg_match_all('/\bQ[0-9]{5}-[0-9]\b/',"Q05546-8 XXX Q13323-0",$output,PREG_PATTERN_ORDER);
print_r($output);

或者,您可以使用简写班\d作为数字:\bQ\d{5}-\d\b

正则表达式解释

  • \b - 字边界(我们要么在单词字符([a-zA-Z0-9_])和非单词字符(所有其他字符)之间的开头
  • Q - 文字区分大小写Q
  • [0-9]{5} - 从{5}0范围内的5个(由于5个)数字
  • - - 字面连字符
  • [0-9] - 从05
  • 的正好一位数
  • \b - 再次是一个单词边界。

如果您在较长的序列中包含这些值,则可以考虑使用\bQ[0-9]{5}-[0-9](?![0-9])或使用速记类\bQ\d{5}-\d(?!\d)

demo的输出:

Array
(
    [0] => Array
        (
            [0] => Q05546-8
            [1] => Q13323-0
        )

)