私はこのような文字列のセットを持っています:
Pants [+$50]
Shirts [+$10]
Jeans [+$5]
Jackets [+$100]
これらの行の「[xxx]」を削除して、アイテム名だけを(末尾のスペースなしで)残すにはどうすればよいですか?正規表現を定義するように言われましたが、それがどのように機能するかわかりません...
[
と]
は特殊文字であるため、これは実際には少し紛らわしい正規表現です。
$str = 'Pants [+$50]';
$str = rtrim(preg_replace('/\[[^\]]*\]/', '', $str));
// 'Pants'
基本的に、partern\[[^\]]*\]
は、リテラルの[
後に0個以上の文字が続き、その後に。が続かないことを]
意味し]
ます。preg_replaceの2番目の文字列は、置き換えられる文字列です。この場合、削除したいので空の文字列です。次に、rtrimを使用して、末尾の空白を削除します。
これを試してください:
正規表現
(?im)[ \t]*\[[^\]\[]+\][ \t]*$
コード
$result = preg_replace('/^(.+?)[ \t]*\[[^\][]+\][ \t]*$/im', '$1', $subject);