0

複数の種類の文字列があります。number text (text)かっこ内の内容を消去したい場合。そうでなければそうではありません。

これにより、常に角かっこ内にあるすべてのものが削除されます。

/\((.*?)\)/

先頭の番号を確認するにはどうすればよいですか?

4

3 に答える 3

2

\d任意の数字に一致します。そして、貪欲でない繰り返しを使用するよりも優れています:

/\d\s*\(([^)]*)\)/

スペースが必須の場合は、次を使用します。

/\d\s+\(([^)]*)\)/

の場合に一致させたくないa1 (text)場合は、次を使用します。

/\b\d+\s*\(([^)]*)\)/

ただし、削除する場合は、括弧の周りのものを一致させる方が簡単な場合があります(例として最初の正規表現を使用しますが、これは3つのケースすべてに適用できます)。

$str = preg_replace('/(\d\s*)\([^)]*\)/', '$1()', $str);

最初のケース(textina1 (text)も削除する必要がある場合)の場合、およびスペースの量を1つに制限する場合は、後読みを使用して、もう少し効率的なバリアントを使用することもできます。

$str = preg_replace('/(?<=\d\s)\([^)]*\)/', '()', $str);

後読みは試合に含まれないため、キャプチャする必要はありません。残念ながら、PCREでは、後読みは固定長である必要があります。そのため、またはのいずれかで使用することはできませ\d+\s*

于 2012-11-03T17:14:08.817 に答える
1

この正規表現を使用する

(\d[^\(\)]*?\().*?(\))
    ^           ^   ^
    |           |   |->2nd group matches )
    |           |->matches content within ()
    |->1st group would match a digit followed by 0 to many characters(except ())followed by (

と置き換えます

$1$2
于 2012-11-03T17:16:17.257 に答える
0

一緒に行く

$s = preg_replace('/(?<=\d)\s*\([^)]*\)/', '', $s);
于 2012-11-03T17:44:48.350 に答える