正規表現で、改行以外の空白文字にマッチさせる方法

2024年12月31日火曜日

javascript

t f B! P L

アイキャッチ画像(正規表現で、改行以外の空白文字にマッチさせる方法)

正規表現を使って文字列を操作する際、空白文字にマッチさせることはよくあるシーンの一つです。しかし、空白文字の中でも「改行以外の空白文字」のみを対象としたい場合、どのようなパターンを使えばよいのでしょうか。本記事では、その具体的な方法について解説します。

改行以外の空白文字とは?

正規表現における空白文字は、以下のような文字を指します。

  • 半角スペース(
  • タブ文字(\t
  • 改行文字(\n
  • 復帰文字(\r
  • 垂直タブ(\v
  • 改ページ(\f

その中で「改行以外の空白文字」に限定したい場合、\n\rを除外する必要があります。

改行以外の空白文字にマッチする正規表現

改行以外の空白文字にマッチさせるための正規表現は次のようになります:

[^\S\n\r]

パターンの意味

  • \S:空白文字以外の文字にマッチします。
  • ^\S:空白文字にマッチします(否定形で逆の意味を持たせます)。
  • [^\S\n\r]:空白文字の中でも、\n(改行)と\r(復帰)を除外します。

このパターンにより、「半角スペース」や「タブ文字」など、改行以外の空白文字にマッチできます。

実際の使用例

Pythonを使った例

以下はPythonでこの正規表現を用いる例です。

import re

# テスト文字列
text = "これは テスト\nの文字列\tです。"

# 改行以外の空白文字にマッチ
pattern = r"[^\S\n\r]"
matches = re.findall(pattern, text)

# 結果を表示
print("マッチした文字:", matches)

出力:

マッチした文字: [' ', '\t']

この結果から、半角スペースとタブ文字のみがマッチしていることがわかります。

JavaScriptを使った例

JavaScriptで同様の操作をする場合も次のように書けます。

const text = "これは テスト\nの文字列\tです。";
const pattern = /[^\S\n\r]/g;

// マッチ結果を取得
const matches = text.match(pattern);

console.log("マッチした文字:", matches);

出力:

マッチした文字: [' ', '\t']

応用例

改行以外の空白文字を置換

改行以外の空白文字を特定の文字に置き換えたい場合にも、この正規表現が役立ちます。

Pythonの例

# 改行以外の空白文字をアンダースコアに置換
replaced_text = re.sub(r"[^\S\n\r]", "_", text)
print(replaced_text)

出力:

これは_テスト
の文字列_です。

JavaScriptの例

const replacedText = text.replace(/[^\S\n\r]/g, "_");
console.log(replacedText);

出力:

これは_テスト
の文字列_です。

注意点

  • 正規表現エンジンによっては、\S\nの扱いが異なる場合があります。特定の環境で動作を確認することをおすすめします。
  • 改行や復帰文字を含む特殊なフォーマットのデータでは、結果が意図しないものになる可能性もあります。

まとめ

「改行以外の空白文字」にマッチさせる正規表現 [^\S\n\r] を使えば、タブやスペースのみを対象とした操作が簡単に行えます。この正規表現は、データ整形やフォーマット処理で特に有用です。ぜひ、正規表現を活用する際に試してみてください!

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ