私は正規表現についてかなり初心者です。私は2つ以上のコンマを1つに置き換え、最後のカンマを削除しようとしています。PHPの正規表現2つの異なるパターンと2つの異なる置換
$string1= preg_replace('(,,+)', ',', $string1);
$string1= preg_replace('/,([^,]*)$/', '', $string1);
私の疑問は、1行の正規表現でこれを行う方法はありますか?
私は正規表現についてかなり初心者です。私は2つ以上のコンマを1つに置き換え、最後のカンマを削除しようとしています。PHPの正規表現2つの異なるパターンと2つの異なる置換
$string1= preg_replace('(,,+)', ',', $string1);
$string1= preg_replace('/,([^,]*)$/', '', $string1);
私の疑問は、1行の正規表現でこれを行う方法はありますか?
はい、もちろん可能です:
$result = preg_replace(
'/(?<=,) # Assert that the previous character is a comma
,+ # then match one or more commas
| # or
, # Match a comma
(?=[^,]*$) # if nothing but non-commas follow till the end of the string
/x',
'', $subject);
これは文字列の最後の文字の場合に限り、最後のカンマを置き換えませんか? – slowpoison
@slowpoison:そうです、答えを編集します。 –
答えと良い説明に感謝します。すぐに受け入れるつもりです(時間制限)。 – Malixxl
いいえ、置き換えが異なり、2つのカンマが文字列の最後にある場合とない場合があります。私は第二のパターンを変更
preg_replace(array('/,,+/', '/,$/'), array(',', ''), $string1);
注:あなたがそのような操作を行うことができるようにpreg_replace()
は、パターンや交換の配列を受け取り、言っ
。 希望に役立ちます。
あなたはそれが唯一のコンマだ場合、最後のコンマを削除しますか? – slowpoison