0

したがって、基本的にtxtファイルからリストを取得するスクリプトを作成しようとしています。

今、リストは問題ではありません。そのalgはもっとそうです。使っています

たとえば。

1 つの 1 デバイスの出力が ABC(R)1234 の場合、ABC をルックアップするために preg マッチを使用してから ) を切り取り、必要な 1234 を取得します。

しかし、ABC 1234 を出力する別のデバイスに気付いたので、カットが機能しません。

私はそうのように2 preg_matchsを行うことができます

preg_match('/ABC/',$match){ などですよね?

しかし、それは私のカットのためです..

では、なぜ ABC(R) と ABC のプレグ マッチをしないのですか?

それは (R) が好きではありません.. ABC(R) と ABC の preg_match を一致させるにはどうすればよいですか。

4

1 に答える 1

0

?量指定子を使用して、正規表現の一部をオプションにすることができます。このような:

$pattern = '/ABC(?:\([^)]+\))?\s*/';

ここ([^)]+)の部分 (「左括弧に一致し、次に閉じ括弧以外のもの、次に閉じ括弧に一致する」と読みます) は、量指定子がくっついている非キャプチャ グループ (with (?:...)) 表記に配置されます。?つまり、一致する場合はすべての一致したテキストをキャプチャしますが、存在しない場合は気付かないということです。

preg_replaceこれらの部分を切り取るために使用できます( demo ):

$test1 = 'ABC(R)1234';
$test2 = 'ABC 5678';
echo preg_replace($pattern, '', $test1), PHP_EOL; // 1234
echo preg_replace($pattern, '', $test2), PHP_EOL; // 5678
于 2013-06-03T13:55:38.173 に答える