
現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。
jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。
私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。
かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。
一二三『一二三にそれぞれ♪マーク』
という文章に対して
一♪二♪三♪
という一括置換をすることには成功しました。
こう書いています。
■検索文字列
(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』
■置換文字列
\1♪\2♪\3♪
これでぶじ、以下のように一括置換できました。
一♪二♪三♪
現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。
この調子で長い文章も変換できていて満足していたのですが……
しかし代入文字が10個以上になったとたんに、まったく動きません。
■置換したい文章
一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』
■検索文字列
(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』
■置換文字列
\1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪
こうやると、置換後の文章は以下のようになってしまいます。
一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪
10個目以降の数字が、正しく機能してくれません。
\10
という正規表現の書き方は
「一番目の値を参照して、それから数字の0を記入しなさい」
という意味になってしまうようです。
わたしは十番目の値を代入してほしいだけなんです。
\1 や \2 や \3 といった代入文字のように
\10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。
ちなみに以下のように書いてもダメでした……。
\1\0
グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします!
秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。
No.4ベストアンサー
- 回答日時:
Jedit X は、Macのアプリでよろしいですね?
ヘルプの 「7.5 正規表現について」には
> Jedit Xで搭載している正規表現エンジンは、oniguruma という最新最強の正規表現エンジンです。
とあります。
> (?<name>式) 名前付き捕獲式集合
とはあるのですが、手許の2.37では、名前付きは使えないようです。その代わり、
> 後で\1や\2などの番号で参照できるようになると同時に、\g<name> という名前でも参照できるようになります。
とあったので、\gによる参照は可能では?と考え、置換文字列を
> \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\g<10>♪
としたところ、うまく動作しました。
ちなみに、検索文字列ですが
.{1,1} を大量に使ってますが、これは . と等価です。
→ (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)『(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)にそれぞれ♪マーク』
また、後半は後で使う訳では無いし、グループになっているわけでも無いので、()は不要です
→ (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)『..........にそれぞれ♪マーク』
同じ表現が繰り返されているときこそ、{}の出番です
→ (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)『.{10}にそれぞれ♪マーク』
> #2,#3
おそらく、後半の『一二三四五六七八九十にそれぞれ♪マーク』のある行だけ処理し、かつ、この文言を消したい、ということでしょうから、その方法では不適切かと思われます。
Perlかなんかで、変換スクリプト書くのが汎用的に使えて楽だと思った。
if( s/(.+)『.*にそれぞれ(.)マーク』/$1/ ) { $m=$2; s/(.)/$1$m/g ;}
みたいなの。
No.2
- 回答日時:
いえ、正規表現はこの様に書きます。
([一二三四五六七八九十])
⇒
\1?
元の文章が
一二三四五六七八九十の数が三個あるとき
であるとき、個や本が繫がっているときは変えたくなけりゃ
([一二三四五六七八九十])([^個本])
⇒
\1\2
とすれば
一?二三?四五?六七?八九?十の数が三個あるとき
なります。私はEmEditor(pro http://jp.emeditor.com/ )ですからファイルを開かなくてもフォルダー内、サブフォルダー内のファイルを一括して置換できます。フリー版は開いたファイルのみ。
最低限、POSIX の拡張正規表現( http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F% … )は身につけておくと良いでしょう。
もちろん、より高度な正規表現はPerl( http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F% … )を使うほうが良いです。
No.1
- 回答日時:
秀丸に特化した正規表現ライブラリでなくて、
PCREや鬼車系の正規表現を使えば名前付きキャプチャが
できるので問題は解決できそうですが、
秀丸の制限でキャプチャは9個までと決まっているので、
外部プログラムを使うしか方法は無さそうです。
したがって、秀丸でサポートしてもらうか、
9個以下に分割して置換するか、PHP Perl Python Rubyといった
名前付きキャプチャが使える外部ツールで置換する、
ことになると思います。
参考URL:http://homepage3.nifty.com/_htom/macro/macro_dll …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- その他(IT・Webサービス) 少し複雑なテキスト置換がしたいです。 2 2022/10/13 14:42
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Word(ワード) ワードフォント 一括置換の方法 4 2022/12/31 00:27
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
位置指定の文字マッチングと同...
-
VBA 置換文字がみつからない時
-
vbs 連続した8タブを空白に変換...
-
正規表現で、特定の文字列を含...
-
C言語でテキストファイルの内容...
-
Eclipse 改行後のタブ
-
フォントの色を保持したままセ...
-
ダブルクォーテーション置換時...
-
複数行に渡る文字列の置換
-
正規表現 特定の文字列を含む行...
-
textファイルにある文字列の置...
-
Excel VBA 教えてください。 VB...
-
コマンドラインスイッチ -pe 's...
-
ダブルコーテーション 、"を二...
-
Excel VBA リストに一致したデ...
-
秀丸で繰り返す文字の行を削除...
-
\\(円)記号を置換したい
-
Excel・ユーザーフォームの情報...
-
word VBA 改ページの繰り返しに...
-
UTF-8のTextファイルの置換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
csvデータ ダブルクォーテ...
-
各項目がダブルクォーテーショ...
-
Excel VBA リストに一致したデ...
-
スペースで区切られた氏名から...
-
秀丸エディタで、「-」や「ー」...
-
EXCELマクロを用いてグラフの系...
-
csvデータのダブルクォーテーシ...
-
C#で空白行を削除する方法
-
EXCEL警告「置換対象のデータが...
-
xmlファイル内の文字列置換
-
正規表現 特定の文字列を含む行...
-
テキストボックスの文字列を置...
-
○文字目に文字挿入
-
C言語でテキストファイルの内容...
-
複数のパワーポイントファイル...
-
c# ビルド直前にコードを置換で...
-
Excel・ユーザーフォームの情報...
-
\\(円)記号を置換したい
おすすめ情報