正規表現について質問です。
テキストファイル内の文字列に対して、URL以外の「&」を「&」に置換したいのですが、
普通に置換してしまうと、URL内の「&」も全角になってしまうため、
正規表現で回避しようと考えています。
この場合、正規表現はどのように記述すればよいか、教えていただけると大変助かります。
----------------------------------------------------------------------
(成功例)
ガチャピン&ムック
http://hogehoge.jp/index.html?k=2011&id=0414
↓↓↓↓↓↓
ガチャピン&ムック
http://hogehoge.jp/index.html?k=2011&id=0414
----------------------------------------------------------------------
また、正規表現を使わなくてもできるなど、別の提案もOKです。
質問に不備があれば、その旨ご指摘お願いいたします。
正規表現勉強中のため、何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
<回答>
自分も、これを正規表現とエディタの通常置換だけで綺麗に解決する方法は思い浮かびませんでした。
エディタのマクロを使うか、スクリプト言語が使えればそれほど難しい話では無いと思います。
例えばですが、先読み否定を利用してこんな正規表現を作ってみます。
※想定処理系は鬼車で、実験環境は「サクラエディタ+bregonig.dll(v 2.00)」です。
^(?![ ⇒]?\w+?p://)(.*)&
こうするとキャプション1に&までの文字列が入るため、置換後ワードに
$1置換希望文字列
とでも書けば、一見動いたように見えます。
しかしこれだと、1行内に&が複数現れるケースで、最後の1つしか置換出来ない事になります。
.*を.*?としても、最初の1つになるだけでしょう
自分の知識量だとこの辺を解決できる記法が無いとまでは断言できませんので、出来る!というのがあれば是非知りたいなと思います。
※参考変換例は、行頭に#を付与しています。
## 元データ
#ガチャピン&ムック
#ガチャ&ピン&ムック
#http://hogehoge.jp/index.html?k=2011&id=0414
# http://hogehoge.jp/index.html?k=2011&id=0414
# http://hogehoge.jp/index.html?k=2011&id=0414
#⇒http://hogehoge.jp/index.html?k=2011&id=0414
## 置換後
#ガチャピン&ムック
#ガチャ&ピン&ムック
#http://hogehoge.jp/index.html?k=2011&id=0414
# http://hogehoge.jp/index.html?k=2011&id=0414
# http://hogehoge.jp/index.html?k=2011&id=0414
#⇒http://hogehoge.jp/index.html?k=2011&id=0414
<おまけ>
ただ、スクリプト言語を利用してもよいのであれば、いろんなアプローチで簡単に解決できます。
一番真面目な方法はURLが含まれることを専用ライブラリで解析する方法でしょうが、そこまでやらずにこの正規表現のようにURIっぽいものを弾いてみます。
https://ideone.com/N1Ubf
手法選択の中で一案として貰えればと思います。
Perlが代表格ですが、正規表現はスクリプト言語内で真価を発揮しますので。
回答いただきありがとうございます。
正規表現はスクリプト言語内が得意分野なのですね。お恥ずかしながら特性を理解していませんでした。
置換ルールが固定されているので無理にエディタだけでやろうとせず、専門家に依頼することにします。
とても助かりました。ありがとうございました。
No.1
- 回答日時:
正直、あらゆるケースに対応したものを全自動でやろうとすると難しいと思います。
まず、その置換を行うソフトは何か?
テキストエディタの置換機能なのか、sedなのか、perlなのか、PHPなのか。
ソフトが違えば、正規表現自体に違いがあります。
半角→全角変換なら、「全角」が正しく使える(マルチバイト文字を「1文字」として扱える/マルチバイトの途中のバイトからはマッチしない)処理系が求められます。
次に入力がどんな形式になっているのか?その入力形式の特徴を使えば楽にできるかもしれません。
例えば、URLが 「必ず単独1行に改行無しでURLだけが書かれている」状態なら、そのような行を処理しない、という方法が使えます。が、他の内容と同じ行にあったり、途中で改行で切れることもあったり、だと面倒です。
例えば、URLは「半角英数記号」が基本であり、置換したい&の前後は必ず「全角」であるならば、後方参照を使って「前の全角&後の全角」→「前の全角&後の全角」のように置換できます。が、URLに全角を使っていたり、置換する&の前後が全角とは限らない、となると面倒です。
次に作業量がどれくらいなのか?
数ファイルだけなら、エディタの確認付き置換を使って、人間が判断するのが確実です。
この回答への補足
早速のご回答ありがとうございます。
以下、補足いたします。
⇒まず、その置換を行うソフトは何か?
└テキストエディタ、もしくは置換用のフリーソフト(Repl-Ace)を考えています。
⇒入力がどんな形式になっているのか?
└基本的には単独1行で書かれているのですが、たまにURLの前に全角スペースか半角スペース、もしくは「⇒」が入ります。
⇒作業量がどれくらいなのか?
└一度に作業するのは数ファイルなのですが、結構漏れがでたりしてしまうため、あらかじめ正規表現での置換を登録しておこうと考えています。
置換するところは他にもありますので、まとめてやりたいです。
度々すみませんが、何卒知恵を貸してくださいませ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
- 数学 正規数の定義で分からないことがあります。 正規数の定義について専門書において 「xがr進正規であると 1 2023/07/17 20:50
- バッテリー・充電器・電池 iPhoneX Rバッテリー交換についての質問です。 現在iPhoneXRを3年使用しています。最近 1 2022/11/04 16:51
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
- Java JAVAの1つの正規表現で上記Textすべてと合致する正規表現を教えてください。 4 2022/11/06 08:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
会社で使用しているUSB(Trend M...
-
この前掃除してたら、5.6年くら...
-
SSDをフォーマットしたら、その...
-
差分バックアップや増分バック...
-
バックアップは差分バックアッ...
-
住所から直線距離を算出したい...
-
SSDのファームウェアはNANDフラ...
-
大企業で使われているバックア...
-
Windowsはオープンソースですか?
-
内蔵ストレージでないとパーテ...
-
パソコンを捨てる場合はTPMを破...
-
ソフトはVectorでダウンロード...
-
外付けストレージにパーティシ...
-
PCの寿命は平均3年?:本当で...
-
マザーボードにあるTPMには各サ...
-
コンピュータ
-
PCでDataikuを使うにはどうすれ...
-
録画している動画の背景をグリ...
-
2つのフォルダ内にある全てのフ...
-
Windows Updateってメーカー製...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンの初期不良の再現方法...
-
Camo Studioというアプリが勝手...
-
ノートパソコンのUEFIはそのノ...
-
パソコンを買い換える期間が長...
-
レノボのパソコンのNovoボタン...
-
ノートパソコンの充電が気温が1...
-
ノートパソコンは高度や気温や...
-
貴方は質の悪いソフトに出会っ...
-
ノートパソコンのキーボードや...
-
左のキーに書かれているアイコ...
-
ノートパソコンの充電って気温...
-
メモリとNVMeM2のSSDって見た目...
-
Microsoftストアのソフトは特別...
-
どんなソフトだと貴方は使う気...
-
Windowsの夜間モードを日中に使...
-
外付けストレージにMicrosoftス...
-
スライド動画作り方
-
iPhoneのアプリはサンドボック...
-
文字の禿げたキーボードの禿げ...
-
IT系の中でもデータサイエンス...
おすすめ情報