とある事情により、日本語英語混在の文で半角スペースを排除する正規表現を探していたんですけど、普通に\sだとすべての半角スペースに一致してしまうため、英文の半角スペースまで一致してしまうんですよね
今回やりたいのはあくまで日本語を含めた文での英文以外の半角スペースを排除することなので上記だとダメダナ(・×・)
というわけでいか試行錯誤の結果
答えだけ知りたけれはCASE4見ればいいよ
とある事情により、日本語英語混在の文で半角スペースを排除する正規表現を探していたんですけど、普通に\sだとすべての半角スペースに一致してしまうため、英文の半角スペースまで一致してしまうんですよね
今回やりたいのはあくまで日本語を含めた文での英文以外の半角スペースを排除することなので上記だとダメダナ(・×・)
というわけでいか試行錯誤の結果
答えだけ知りたけれはCASE4見ればいいよ
正規表現『\s
』
置換後『』(ただ消すだけ)
結果『abcdefあいうえおカキクケコghi』
意味『\s
→ 半角スペース』
単純に半角スペースが全て死んだ
正規表現『/s([^\x01-\x7E])
』
置換後『』
結果『abc defいうえおキクケコ ghi』
意味『([^\x01-\x7E])
→ 全角文字』
とりあえず日本語()……というより全角文字(2byte文字)の前に半角スペースがあったら殺してみた。
結果としては全角文字の前の半角スペースをきちんと殺せたが、全角文字の最初も一緒に殺された。
正規表現『/s(([^\x01-\x7E]))
』
置換後『$1
』
結果『abc defあいうえおカキクケコ ghi』
意味『$1
→ ()内を変数化。数字は()の順番』
消えるなら消える部分だけ変数化して後からぶち込んでやればいいってことで全角文字部分を$で入力
正規表現『(([^\x01-\x7E])\s|\s([^\x01-\x7E]))
』
置換後『$2$3
』
結果『abc defあいうえおカキクケコghi』
意味『(|)
→ or表現 $2と3になったのは←のorのせいで変数化の順番が増えた』
CASE3の2つを合わせて置換後を調整
これで全角文字の前後にある半角スペースのみを殺せるようになった。
『abc def』の間にある半角スペースは前後が全角文字じゃないので引っかからないのでそのまま。
実は今まで$ってどうやって呼び出しているのか知らなかった人間です()
結構便利ですね。問答無用に()を変数化しているのを気をつけないと数が合わないとかいう初歩的な間違いをおかしそうですけど(´・ω・`)
あと正規表現のカテゴリどうしよう