我有大量的文本字符串,我需要提取符合以下模式的所有文本:
QXXXXX-X
(其中X可以是任何数字,0-9)。
我如何在PHP中执行此操作?
<?php
preg_match_all("","Q05546-8 XXX Q13323-0",$output,PREG_PATTERN_ORDER);
print_r($output);
?>
答案 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]
- 从0
到5
\b
- 再次是一个单词边界。如果您在较长的序列中包含这些值,则可以考虑使用\bQ[0-9]{5}-[0-9](?![0-9])
或使用速记类\bQ\d{5}-\d(?!\d)
。
demo的输出:
Array
(
[0] => Array
(
[0] => Q05546-8
[1] => Q13323-0
)
)