获取所有模式Word文本

时间:2016-06-23 12:12:43

标签: php regex preg-match preg-match-all

如果我有文字,我如何从文本中获得具有特定模式的所有字符串?例如,我希望所有字符串都带有这些图案:

  

单词 CER 后跟 any number ,后跟其中一个   此字符 ; , . {{1

例如,从下面的文本中我想得到以下结果:CER123,CER23,CER01,CER24

  

Lorem CER123 ipsum dolor sit amet,quod copiosae CER23,CER01; CER24 insolens et usu,CER34ERD ut saperet civibus Accommodare。

我试过这个:

  

preg_match_all("?/ CER [0-9 *] /",$内容,$米);

但它返回:spaceCER1CER2CER0CER2

1 个答案:

答案 0 :(得分:2)

使用+,添加一个捕获组,并在需要获得的值之后为您需要的字符创建一个字符类:

preg_match_all('/(CER[0-9]+)[;,.\s]/',$content,$m);
                 ^        ^^^^^^^^^

请参阅regex demo

模式说明

  • (CER[0-9]+) - 第1组捕获您需要的文本部分:
    • CER - 一系列文字字符CER注意:如果您只需要整个字CER,则需要非字字符或在字符串的开头,添加字边界:\bCER\b
    • [0-9]+(= \d+) - 1位或更多位数
  • [;,.\s] - 字符类中的任何字符:;,.\s(空格 - 如果仅表示空格,则替换为空格一个固定的空间)。

PHP demo

$re= '/(CER[0-9]+)[;,.\s]/';
$content = "Lorem CER123 ipsum dolor sit amet, quod copiosae CER23,CER01;CER24 insolens et usu, vis CER34ERD ut saperet civibus accommodare."; 
preg_match_all($re, $content, $m);
print_r($m[1]);