• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:英単語が誤って空白で区切られたのを正規表現で除く)

正規表現を使用して英単語の空白を除去

このQ&Aのポイント
  • 質問文章では、正規表現を使用して英単語の空白を除去する方法についての質問があります。
  • また、質問者は英単語がスペースで区切られてしまっている場合についても言及しています。
  • 読みやすさを向上させるために、これらの英単語を正しくスペースで区切り直す方法を知りたいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4852/10266)
回答No.2

>テキストエディタの置換機能を考えていたのですが、LinuxかPearlの知識が必要なのでしょうか?MS-DOSとVBSの少しの知識しか持ちあわせておらず、PHPを勉強してみようと思っていたところです。 VBSでも正規表現と置換ができますよ。VBSだと正規表現の括弧内を\1でなく$1で参照。 Dim regex, data Set regex = New RegExp regex.Pattern = " ([a-z]) " regex.IgnoreCase = False ' 大文字と小文字を区別する regex.Global = True ' 繰り返し検索する Do While Not WScript.StdIn.AtEndOfStream data = WScript.StdIn.ReadLine WScript.StdOut.WriteLine regex.Replace(data," $1") Loop

piyo-maru7
質問者

お礼

ありがとうございました。これで動作確認できました。VBSでも後方参照できるんですね。 これは他のケースで重宝しそうです。大変感謝です。 結論ですが、最初のご回答のとおり、うまくいきませんでした。読み込まれたテキストに対して、一度だけしか効かないので、英単語が7文字などの場合、最初の数文字がくっつくのみであり、そのような単語が2度出てきた場合には、二つめの単語にはなんの効力もなさないことが分かりました。 "ツール依存"と仰られましたが、VBSではできそうな気がしません。 ちょっと諦めます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4852/10266)
回答No.1

第一の質問: 置換の指定をどう書くかはツールに依存します。 sedコマンドなら s/ \([a-z]\) / \1/g ・・・・・・ \( \) で囲んだものを \1 で参照 perlなら s/ ([a-z]) / \1/g ・・・・・・ ( ) で囲んだものを \1 で参照 第二の質問: そのケースだけに対応するのは可能ですが、様々なケースにどういう置換が最もふさわしいのかは、分全体を眺めないと何ともいえないですね。 お書きのような、「一文字のものがあれば後ろの文字にくっつける」は悪くないと思いますが。 ただし、 >置換前 スペース[a-z]スペース >置換後 スペース[a-z] だと、一文字のものが連続すると全部はくっつきません。これを全部くっつけたいとするとおそらくツール依存の方法が必要。

piyo-maru7
質問者

お礼

回答ありがとうございます。 調べてみて、 s/置換前/置換後 でこれを/gにより繰り返す という構文なのは理解しました。 テキストエディタの置換機能を考えていたのですが、LinuxかPearlの知識が必要なのでしょうか?MS-DOSとVBSの少しの知識しか持ちあわせておらず、PHPを勉強してみようと思っていたところです。 Windowsで使える言語?ツールを紹介して頂けませんでしょうか?そこから勉強します。Grep検索・置換ツールといったものもあるようですが、そういった類のツールでも可能でしょうか? 今原文を読み進めていますが、一行おきかそれ以上にこういったバラバラになった英単語が出てきて、かなりイライラします。右端にて - で英単語を区切っていないようで、それによってワープロソフトが字間を調整したため、スキャン時にうまく認識されていないようです。20年以上前の文献ですし。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現の使い方

    $input =~ s/[a-z][0-9]-[0-9]/ [a-z][0-9]-[0-9] /g; perl言語での正規表現についてです。 置換に関してなのですが、このような使い方はできないでしょうか?? [a-z][0-9]-[0-9]にヒットしたものの前と後ろにスペースを代入したいのですが、何かいいプログラミングはないでしょうか?

  • Perlで使える正規表現を教えて下さい。

    Perlで使える正規表現を教えて下さい。 半角英語で、小文字が3文字以上続いた後、大文字が来る場合、その大文字の右にスペースを入れる。 これをPerlで使える正規表現を教えて頂けないでしょうか? 例 $str = 'AaaAaaaBbbbbCccccDddBbA'; # Aaa Aaaa Bbbbb Ccccc DddBbA ちなみに、色々ネットで調べて試してみて、 $str =~ s/([a-z])([A-Z])/$1 $2/g; が最も近いコードになったのですが、2文字続いただけでもスペースが入り困っています。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 秀丸で正規表現による置換

    正規表現でつまずいてしまったので教えてください。 こういうデータがあったとして ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ,,E,77774000,13,77770004479,〇〇〇,0,,,,,l_ ,,E,77774000,21,77770004478,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ,,E,88884000,14,88880004479,〇〇〇,0,,,,,l_ ,,E,88884000,20,88880004478,〇〇〇,0,,,,,l_ 6列目に77770004480があったら、5列目の1を10にする。 6列目に88880004480があったら、5列目の5を10にする。 という事がしたいのですが、7777や8888の部分は必ず数字4桁で固定ですが、 実際には0000-9999まであるため、1万回置換するのは面倒です。 そこで、0004480があったら、ヒットする1や5を10に置き換える事がしたいのですが どのようにしたらいいでしょうか? また、12を2に置き換えることもあるので、5列目は 必ず数字ですが、1桁または2桁となります。 正規表現置換で使用するエディタは、秀丸です。 ,,E,77774000,1,77770004480,〇〇〇,0,,,,,l_ ↓ ,,E,77774000,10,77770004480,〇〇〇,0,,,,,l_ ,,E,88884000,5,88880004480,〇〇〇,0,,,,,l_ ↓ ,,E,88884000,10,88880004480,〇〇〇,0,,,,,l_ 以上よろしくおねがいいたします

  • 正規表現を教えて下さい(テキストエディタでの置換)

    いつもお世話になっております。 正規表現に関して細かい質問をさせて下さい。 例えば、G-01,T-02,F-05とあったときに、 これを、01,02,05としたいとき、 正規表現の置換で「[A-Z]-[0-9][0-9]」→「[0-9][0-9]」とすると、 "[0-9][0-9]"という文字列だけ残ってしまいます。 既存の文字列をそのまま残すにはどのようにしたらよいでしょうか? ※テキストエディタでの置換に関してです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • サブライムで正規表現の部分を一括で置換したい

    サブライムで正規表現の部分を一括で置換したいのですがうまくいきません。 見つからないとなります。 <!-- href="#"は、 --> ([a-z]*)([0-9]*) </div> </nav> こちらを下記に一括置換したいです。 <!-- href="#"は、 --> ページ共通の置換対象の文字数値 </div> </nav> どこをしゅうせいすればいいでしょうか?

  • VBAで正規表現

    Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。

  • Excel : タグ付き正規表現による文字置換は可能?

    アクティブセルの文字を、正規表現を利用して文字置換をしたいと考えています。 ただ、単純な文字置換ではなく、正規表現にマッチした文字列を記憶して、 置換後の文字列として呼び出して利用します。 秀丸エディタにあるような「タグ付き正規表現」を利用したいです。 Excelでも同じようなことは可能なのでしょうか? 一例として挙げますと、次のような文字置換です。 ●「?」の後に全角スペース以外の文字がある場合には、「?」の後に全角スペースを1つ入れる。 ●「?」の後に全角スペースが複数続く場合には、「?」の後の全角スペースを1つだけにする。 つまり、★を全角スペースとすると、次のようになります。 あいう?あいう   → あいう?★あいう あいう?★★あいう → あいう?★あいう さらに、一例を挙げますと、 ●「AさんはBさんの友達です」というような文章を、「BさんはAさんの友達です」にする。  つまり、AとBに相当する部分を入れ替える。 よろしくお願いいたします。

  • 正規表現の表現パターンについて教えて下さい。

    こんばんわ、正規表現を使ってある文字列を検索するプログラムを勉強していたのですが、 eregi('(http://|https://)[a-z0-9./_\-]+',第二引数、第三引数) となっていたのですが、第一引数の最後の + の部分はどうゆう意味があるのでしょうか? 僕の理解では[ ]の間が検索する正規表現のパターンだと思っているのですが、、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現について

    例えば sample( 34 ,12 );みたいな関数があって、それを丸ごと置換ダイアログで消したいのですが、 (引数は任意で、間にスペースがあったりなかったりする) 正規表現の使い方がいまいちよく判りません。 検索文字列を ”sample(":z,:z");” <-全然自信無し。 としてもやっぱりヒットしませんでした。 どうすればよいか教えてください。 正規表現のチェックボックスはオンにしてあります。

  • 正規表現メタ文字「-」のエスケープについて

    いつもお世話になります。 正規表現のメタ文字のエスケープ処理を行いたいのですが、「-」の記号については、「[」「]」の中に出てきたときのみ([a-z]、[0-9]など)、エスケープの対象になります。 この場合、どのような正規表現を指定すれば、エスケープを行うことができるでしょうか。 例)  [a-z|A-z] ⇒ [a\-z|A\-z] 宜しくお願いします。