複数の種類の文字列があります。number text (text)
かっこ内の内容を消去したい場合。そうでなければそうではありません。
これにより、常に角かっこ内にあるすべてのものが削除されます。
/\((.*?)\)/
先頭の番号を確認するにはどうすればよいですか?
\d
任意の数字に一致します。そして、貪欲でない繰り返しを使用するよりも優れています:
/\d\s*\(([^)]*)\)/
スペースが必須の場合は、次を使用します。
/\d\s+\(([^)]*)\)/
の場合に一致させたくないa1 (text)
場合は、次を使用します。
/\b\d+\s*\(([^)]*)\)/
ただし、削除する場合は、括弧の周りのものを一致させる方が簡単な場合があります(例として最初の正規表現を使用しますが、これは3つのケースすべてに適用できます)。
$str = preg_replace('/(\d\s*)\([^)]*\)/', '$1()', $str);
最初のケース(text
ina1 (text)
も削除する必要がある場合)の場合、およびスペースの量を1つに制限する場合は、後読みを使用して、もう少し効率的なバリアントを使用することもできます。
$str = preg_replace('/(?<=\d\s)\([^)]*\)/', '()', $str);
後読みは試合に含まれないため、キャプチャする必要はありません。残念ながら、PCREでは、後読みは固定長である必要があります。そのため、またはのいずれかで使用することはできませ\d+
ん\s*
。
この正規表現を使用する
(\d[^\(\)]*?\().*?(\))
^ ^ ^
| | |->2nd group matches )
| |->matches content within ()
|->1st group would match a digit followed by 0 to many characters(except ())followed by (
と置き換えます
$1$2
一緒に行く
$s = preg_replace('/(?<=\d)\s*\([^)]*\)/', '', $s);