Excelで特定の文字またはテキストを削除するための正規表現
誰かがそのツールボックスを正規表現で豊かにすることができるとしたら、Excelがどれほど強力になるかを考えたことがありますか?私たちは考えただけでなく、それに取り組んできました:)そして今、あなたはあなた自身のワークブックにこの素晴らしいregex関数を追加し、すぐにパターンに合わせてサブストリングを一掃することができます!
先週、Excelの文字列を置き換えるために正規表現を使用する方法を検討しました。このために、カスタムRegexの交換機能を作成しました。結局のところ、関数はその主要な使用を超えており、文字列を置き換えるだけでなく、それらを削除することもできます。どうすればいいのでしょうか? Excelに関しては、値を削除することは、それを空の文字列に置き換えること以外は何もありません。
VBA regexp関数Excelでサブストリングを除去します
誰もが知っているように、正規表現はデフォルトでExcelではサポートされていません。それらを有効にするには、独自のユーザー定義関数を作成する必要があります。良いニュースは、そのような関数がすでに書き込まれ、テストされ、使用できることです。あなたがしなければならないのは、このコードをコピーし、VBAエディターに貼り付けてから、ファイルをマクロ対応のワークブック(.XLSM)として保存することです。
関数には次の構文があります。
regexpreplace(テキスト、パターン、交換、[instance_num]、[match_case])最初の3つの引数が必要であり、最後の2つはオプションです。
どこ:
- テキスト- 検索するテキスト文字列。
- パターン- 検索する正規表現。
- 交換- 交換するテキスト。パターンに一致するサブストリングを削除するには、交換するには空の文字列( "")を使用します。
- instance_num (オプション) - 交換するインスタンス。省略すると、見つかったすべての一致が交換されます(デフォルト)。
- match_case (オプション) - テキストケースを一致するか無視するかを示すブール値。ケースに敏感なマッチングの場合、true(default)を使用します。ケース非感受性の場合 - false。
詳細については、regexpreplace関数を参照してください。
ヒント。簡単な場合、Excel式のセルから特定の文字または単語を削除できます。しかし、正規表現は、これについてより多くのオプションを提供します。
正規表現を使用して文字列を削除する方法 - 例
上記のように、パターンに一致するテキストの部分を削除するには、空の文字列に置き換えます。したがって、一般的なフォーミュラはこの形をとります。
regexpreplace(text、pattern、 ""、[instance_num]、[match_case])以下の例は、この基本概念のさまざまな実装を示しています。
すべての一致または特定の一致を削除します
RegexPreplace関数は、特定の正規表現に一致するすべてのサブストリングを見つけるように設計されています。削除する発生は、 instance_numという名前の4番目のオプションの引数によって制御されます。
デフォルトは「すべての一致」です - instance_num引数が省略されている場合、すべての見つかった一致が削除されます。特定の一致を削除するには、インスタンス番号を定義します。
以下の文字列で、最初の注文番号を削除すると仮定します。そのようなすべての数字は、ハッシュサイン(#)から始まり、正確に5桁を含んでいます。したがって、このregexを使用してそれらを識別できます。
パターン:#\ d {5} \ b
境界\ bという単語は、一致するサブストリングが#10000001などのより大きな文字列の一部ではないことを指定しています。
すべての一致を削除するには、 instance_num引数が定義されていません。
=RegExpReplace(A5, "#\d{5}\b", "")
最初の発生のみを根絶するために、 instance_num引数を1に設定します。
=RegExpReplace(A5, "#\d{5}\b", "", 1)
特定の文字を削除するための正規表現
文字列から特定の文字を取り除くには、すべての不要な文字を書き留めて、垂直のバーで分離します。これは、正規表現のオペレーターとして機能します。
たとえば、さまざまな形式で記述された電話番号を標準化するために、まず括弧、ハイフン、ドット、ホワイトスペースなどの特定の文字を取り除きます。
パターン:\(| \)| - | \。| \ s
=RegExpReplace(A5, "\(|\)|-|\.|\s", "")
この操作の結果は、「1234567890」のような10桁の数字です。
便利なため、Regexは別のセルであり、$ A $ 2などの絶対的な参照を使用してそのセルを参照できます。
=RegExpReplace(A5, $A$2, "")
そして、連結演算子(&)を使用して、右、中間、左などのテキスト関数を使用して、必要な方法でフォーマットを標準化できます。
たとえば、(123)456-7890形式ですべての電話番号を記述するには、次の式は次のとおりです。
="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)
ここで、b5はregexpreplace関数の出力です。
正規表現を使用して特殊文字を削除します
チュートリアルの1つでは、組み込み関数とカスタム関数を使用してExcelで不要なキャラクターを削除する方法を検討しました。定期的な表現により、物事がずっと簡単になります!削除するすべての文字をリストする代わりに、保持したい文字を指定するだけです:)
このパターンは、否定されたキャラクタークラスに基づいています - 括弧内ではない単一の文字を一致させるために、キャレットがキャラクタークラスの内側に置かれます[^]。数量ファイアは、それが連続したキャラクターを単一の一致と見なすことを強制しているため、個々の文字ごとではなくマッチングサブストリングの代替品が行われます。
ニーズに応じて、次の正規表現のいずれかを選択してください。
非アルファン次元の文字を削除するには、つまり文字と数字を除くすべての文字を削除するには:
パターン:[^0-9a-za-z]
文字、数字、スペースを除くすべての文字をパージするには:
パターン:[^0-9a-za-z]
文字、数字、アンダースコアを除くすべての文字を削除するには、英数字またはアンダースコアではない文字を表す\ Wを使用できます。
パターン:\ w
他のキャラクター、例えば句読点を保持したい場合は、それらを括弧内に入れます。
たとえば、文字、数字、期間、コンマ、またはスペース以外のキャラクターを取り除くには、次の正規表現を使用します。
パターン:[^0-9a-za-z \。、]
これにより、すべての特殊文字がうまく排除されますが、余分な空白は残ります。
これを修正するために、上記の関数を別の機能にネストし、複数のスペースを単一のスペース文字に置き換えることができます。
=RegExpReplace(RegExpReplace(A5,$A$2,""), " ", " ")
または、同じ効果でネイティブトリム関数を使用するだけです。
=TRIM(RegExpReplace(A5, $A$2, ""))
無数の文字を削除することは正規表現です
文字列からすべての非数値文字を削除するには、この長い式または以下にリストされている非常にシンプルな正規表現のいずれかを使用できます。
数字ではない文字を一致させます。
パターン:\ d
否定されたクラスを使用して非数字以外の文字を剥ぎます:
パターン:[^0-9]
パターン:[^\ d]
ヒント。目標がテキストを削除し、残りの数値を別々のセルにこぼすか、指定された区切り文字で分離した1つのセルにすべてを配置することである場合は、正規表現を使用して文字列から数値を抽出する方法で説明したように、regexpextract関数を使用します。
正規表現して、スペースの後にすべてを削除します
スペースの後にすべてを一掃するには、Space()またはWhitespace(\ s)文字のいずれかを使用して、最初のスペースを見つけ、その後の文字を一致させます。
通常のスペースのみを含むシングルライン文字列(7ビットASCIIシステムの値32)がある場合、以下の正規表現のどれが実際には問題ではありません。マルチライン文字列の場合、違いが生じます。
スペースキャラクターの後にすべてを削除するには、このregexを使用してください。
パターン: " 。*"
=RegExpReplace(A5, " .*", "")
この式は、各ラインの最初のスペースの後に何でも剥ぎ取られます。結果を正しく表示するには、必ずテキストをオンにしてください。
空白(スペース、タブ、キャリッジリターン、新しいラインを含む)の後にすべてを取り除くには、正規表現は次のとおりです。
パターン:\ s。*
=RegExpReplace(A5, "\s.*", "")
\ sは、新しい線(\ n)を含むいくつかの異なる空白タイプと一致するため、この式はセルの最初のスペースの後にすべてを削除します。
特定の文字の後にテキストを削除するための正規表現
前の例のメソッドを使用して、指定した文字の後にテキストを根絶することができます。
各行を個別に処理するには:
一般的なパターン:char。*
シングルライン文字列では、これによりチャーの後にすべてが削除されます。マルチライン文字列では、VBA regexフレーバーでは、期間(。)が新しい線以外のキャラクターと一致するため、各ラインは個別に処理されます。
すべての行を単一の文字列として処理するには:
一般的なパターン:char(。| \ n)*
新しい行を含む特定の文字の後に何かを削除するには、\ nがパターンに追加されます。
たとえば、最初のコンマの後に文字列でテキストを削除するには、これらの正規表現を試してください。
パターン: 、。*
パターン:、(。| \ n)*
以下のスクリーンショットでは、結果がどのように異なるかを調べることができます。
正規表現して、スペースの前にすべてを除去します
テキストの長い文字列を使用する場合、すべてのセルで情報の同じ部分を削除することで、それらを短くすることをお勧めします。以下に、このような2つのケースについて説明します。
最後のスペースの前にすべてを削除します
前の例と同様に、正規表現は「空間」の理解に依存します。
最後のスペースまで何でも一致させるために、このregexは繰り返します(見積マークが追加されて、アスタリスクが顕著になった後にスペースを作成します)。
パターン: "。* "
最後の白人(スペース、タブ、キャリッジリターン、新しいラインを含む)の前に何かを一致させるには、この正規表現を使用します。
パターン:。*\ s
違いは、マルチライン文字列で特に顕著です。
最初のスペースの前にすべてを取り除きます
文字列内の最初のスペースに一致させるには、この正規表現を使用できます。
パターン: ^ [ ^]*
文字列 ^の開始から、ゼロ以上の非空間文字[ ^]*を一致させます。最後の部分は、結果の潜在的な先頭スペースを防ぐために追加されます。
各行の最初のスペースの前にテキストを削除するには、式はデフォルトの「すべての一致」モード( instance_num省略)で記述されます。
=RegExpReplace(A5, "^[^ ]* ", "")
最初の行の最初のスペースの前にテキストを削除し、他のすべての行をそのままにしておくと、 instance_num引数は1に設定されます。
=RegExpReplace(A5, "^[^ ]* ", "", 1)
キャラクターの前にすべてを取り除くための正規表現
特定の文字の前にすべてのテキストを削除する最も簡単な方法は、次のような正規表現を使用することです。
一般的なパターン: ^[ ^char]*char
人間の言語に翻訳されて、「 ^に固定された文字列の開始から、 char [ ^char]*を除く0以上の文字をcharの最初の発生まで。
たとえば、最初のコロンの前にすべてのテキストを削除するには、この正規表現を使用してください。
パターン: ^[ ^:]*:
結果の主要なスペースを避けるために、最後にホワイトスペースの文字\ s*を追加します。これにより、最初のコロンの前にすべてが削除され、その直後のスペースをトリミングします。
パターン: ^[ ^:]*:\ s*
=RegExpReplace(A5, "^[^:]*:\s*", "")
ヒント。正規表現に加えて、Excelには、ポジションまたはマッチごとにテキストを削除する独自の手段があります。ネイティブフォーミュラでタスクを達成する方法を学ぶには、Excelのキャラクターの前または後にテキストを削除する方法をご覧ください。
除き、すべてを除外することを除きます
あなたが保持したいものを除いて、文字列からすべての文字を根絶するには、否定された文字クラスを使用します。
たとえば、小文字やドットを除くすべての文字を削除するには、正規表現は次のとおりです。
パターン:[^az \。]
実際、関数が見つかったすべての一致を置き換えるため、ここで定量剤なしではできます。量子は、個々の文字を処理する代わりに、サブストリングを交換する代わりに、少し速くなります。
=RegExpReplace(A5, "[^az\.] ", "")
ExcelでHTMLタグを削除するための正規表現
まず、HTMLは正規言語ではないため、正規表現を使用して解析することは最良の方法ではありません。とはいえ、Regexesは間違いなくセルからタグをストリップして、データセットをクリーンにするのに役立ちます。
HTMLタグは常に角度ブラケット内に配置されていることを考えると、次の正規表現のいずれかを使用してそれらを見つけることができます。
否定されたクラス:
パターン:]*>
ここでは、オープニング角度ブラケットを一致させ、その後、最寄りのクロージング角度ブラケットまで、閉じる角度ブラケット[^>]*を除く任意のキャラクターのゼロ以上の出現が続きます。
怠zyな検索:
パターン:
ここでは、最初のオープニングブラケットから最初のクロージングブラケットまで何でも一致します。疑問符は強制されます。*クロージングブラケットが見つかるまで、できるだけ少ない文字を一致させます。
どちらのパターンを選択しても、結果はまったく同じになります。
たとえば、A5の文字列からすべてのHTMLタグを削除してテキストを残すには、次の式は次のとおりです。
=RegExpReplace(A5, "]*>", "")
または、スクリーンショットに示されているように、怠zyな量子を使用できます。
このソリューションは、単一のテキスト(行5-9)に対して完全に機能します。複数のテキスト(行10〜12)の場合、結果は疑わしいです - 異なるタグのテキストは1つにマージされます。これは正しいかどうか?私は恐れています、それは簡単に決定できるものではありません - すべてが望ましい結果の理解に依存します。たとえば、B11では、結果「A1」が予想されます。 B10では、「data1」と「data2」をスペースで分離する必要があります。
HTMLタグを削除し、残りのテキストをスペースで分離するには、次の方法で続行できます。
- タグを空の文字列ではなくスペースに置き換えます:
=RegExpReplace(A5, "]*>", " ")
- 複数のスペースを単一のスペース文字に減らします。
=RegExpReplace(RegExpReplace(A5, "]*>", " "), " ", " ")
- トリムリーディングとトレーリングスペース:
=TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " ", " "))
結果は次のようになります:
ablebits regex削除ツール
Excelに究極のスイートを使用する機会があれば、おそらく最近のリリースで導入された新しいRegexツールをすでに発見したでしょう。これらの.NETベースのREGEX関数の美しさは、第一に、VBAの再gexp制限がないフル機能の正規表現の構文をサポートし、第二に、すべてのコード統合がバックエンドで行われるため、ワークブックにVBAコードを挿入する必要はないことです。
仕事のあなたの部分は、正規表現を構築し、それを機能に提供することです:)実用的な例でそれを行う方法を教えてください。
Regexを使用して括弧や括弧内のテキストを削除する方法
長いテキスト文字列では、それほど重要ではない情報が[括弧]と(括弧)に囲まれていることがよくあります。他のすべてのデータを保持するこれらの無関係な詳細をどのように削除しますか?
実際、HTMLタグを削除するための同様の正規表現、つまりアングルブラケット内のテキストをすでに構築しています。明らかに、同じ方法が四角い括弧と丸い括弧でも機能します。
パターン:(\(。*?\))|(\ [。*?\])
トリックは、可能な限り短いサブストリングと一致するために、怠zyな量子(*?)を使用することです。最初のグループ(\(。*?\))は、開口部の括弧から最初の最後の括弧まで何かを一致させます。 2番目のグループ(\ [。*?\])は、オープニングブラケットから最初のクロージングブラケットまで何かを一致させます。垂直バー|またはオペレーターとして機能します。
パターンが決定された状態で、それを「フィード」して、正規表現に削除機能にしましょう。方法は次のとおりです。
- The AbleBitsデータの[The Text Group]で、 Regexツールをクリックします。
- Regexツールペインで、ソース文字列を選択し、正規表現を入力し、削除オプションを選択して、削除をクリックします。
結果を値ではなく式として取得するには、挿入を式チェックボックスとして選択します。
A2:A5の文字列からブラケット内のテキストを削除するには、次のように設定を構成します。
その結果、 ablebitsregexremove関数は、元のデータの横にある新しい列に挿入されます。
この関数は、標準の挿入関数関数ダイアログボックスを介してセルに直接入力することもできます。ここでは、 abvitsudfsの下に分類されます。
AbleBitsRegexRemoveはテキストを削除するように設計されているため、ソース文字列とregexの2つの引数のみが必要です。両方のパラメーターは、式で直接定義するか、細胞参照の形で提供できます。必要に応じて、このカスタム関数は任意のネイティブ機能と一緒に使用できます。
たとえば、結果の文字列に余分なスペースをトリミングするには、トリム機能をラッパーとして使用できます。
=TRIM(AblebitsRegexRemove(A5, $A$2))
これが、正規表現を使用してExcelで文字列を削除する方法です。読んでくれてありがとう、来週私たちのブログでお会いできることを楽しみにしています!
利用可能なダウンロード
Regexを使用して文字列を削除 - 例(.xlsmファイル)究極のスイート - トライアルバージョン(.exeファイル)
以上がExcelで特定の文字またはテキストを削除するための正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









