2016-06-23 5 views
1

テキストがある場合、テキストから特定のパターンのすべての文字列を取得するにはどうすればよいですか?すべてのパターンを取得するWordテキスト

語 の1本の文字;,.またはspace続いany number続いCER:たとえば、私はこのpattersを持つすべての文字列をしたいです

テキストからexempleのために、私は次のような結果の配列を持っているしたいとウォルド怒鳴る:CER123、CER23、CER01、CER24

LoremのCER123はイプサム嘆きAMET座る、QUODのcopiosaeのCER23、CER01。 CER24は、CER34ERDとは別の場所で使用されています。

preg_match_all( "/ CER [0-9 *] /?"、$コンテンツは、$ M);:

私はこれを試してみました

それが返されます:CER1CER2CER0CER2CER3

答えて

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]); 
関連する問題