1

私はこのような文字列のセットを持っています:

Pants [+$50]
Shirts [+$10]
Jeans [+$5]
Jackets [+$100]

これらの行の「[xxx]」を削除して、アイテム名だけを(末尾のスペースなしで)残すにはどうすればよいですか?正規表現を定義するように言われましたが、それがどのように機能するかわかりません...

4

2 に答える 2

1

[]は特殊文字であるため、これは実際には少し紛らわしい正規表現です。

$str = 'Pants [+$50]';
$str = rtrim(preg_replace('/\[[^\]]*\]/', '', $str));

// 'Pants'

基本的に、partern\[[^\]]*\]は、リテラルの[後に0個以上の文字が続き、その後に。が続かないことを]意味し]ます。preg_replaceの2番目の文字列は、置き換えられる文字列です。この場合、削除したいので空の文字列です。次に、rtrimを使用して、末尾の空白を削除します。

于 2012-05-19T04:25:59.760 に答える
0

これを試してください:

正規表現

(?im)[ \t]*\[[^\]\[]+\][ \t]*$

コード

$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);
于 2012-05-19T04:27:56.080 に答える