如果我有文字,我如何从文本中获得具有特定模式的所有字符串?例如,我希望所有字符串都带有这些图案:
单词
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 *] /",$内容,$米);
但它返回:space
,CER1
,CER2
,CER0
和CER2
答案 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
(空格 - 如果仅表示空格,则替换为空格一个固定的空间)。$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]);