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

PHP中的快速正则表达式模式,php,regex,Php,Regex,我有一个很大的文本字符串块,我需要提取所有匹配以下模式的文本: QXXXXX-X(其中X可以是任何数字,0-9) 如何在PHP中实现这一点 <?php preg_match_all("","Q05546-8 XXX Q13323-0",$output,PREG_PATTERN_ORDER); print_r($output); ?> 给你: preg_match_all('/\bQ[0-9]{5}-[0-9]\b/',"Q05546-8 XXX Q13323-0",$output

我有一个很大的文本字符串块,我需要提取所有匹配以下模式的文本:

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

如何在PHP中实现这一点

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

给你:

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}
    -正是从
    0
    5
    范围内的5位(由于
    {5}
  • -
    -文字连字符
  • [0-9]
    -从
    0
    5
  • \b
    -又是一个单词边界
如果你在较长的序列中有这些值,你可以考虑使用<代码> \BQ[09] { 5 } -[09](??[09])/>代码,或者使用速记类,<代码> \bq\d{ 5 }-\d(?!\d)< /代码> ./p> 报告的产出:


试试看,否则你甚至不知道你是否可以自己写。OK刚找到一个生成器!谢谢
preg\u match\u all('~Q\d{4}-\d~,“Q05546-8 XXX Q13323-0”,$output,preg\u PATTERN\u ORDER);
应该是
\d{5}-\d
。。。
Array
(
    [0] => Array
        (
            [0] => Q05546-8
            [1] => Q13323-0
        )

)