
No.4ベストアンサー
- 回答日時:
こんにちは。
> 数字部分を残しつつ置換するにはどうすればよいでしょうか?
基本的には、検索文字列内の残したい部分を半角カッコ"()"で括っておき、
置換文字列で、タグ付き正規表現 (\1、\2など)で記述すれば良いです。
※詳細は「秀丸エディタ」のヘルプをご覧下さい。
以下は、補足要求及び確認事項です。
1)ご提示の「正規表現」の文字列での、"*." は ".*" の間違いでは?
・アスタリスク[*] とピリオド[.] の順番が逆だと思われます。
2)"第"と"条"の間の文字が、数字文字のみ(下記条件参照)の場合を
置換対象とするということですか?
上記の件も踏まえて、ご提示の置換条件を纏めると、
(一部、当方で勝手に設定した条件も含みます)
<置換対象の文字列の条件>
1)"第"の前にタブ[\t]があること。
2)"第"と"条"の間に以下の何れかの数字文字があること。
・半角の数字文字(連続文字も含む)
・全角の数字文字(連続文字も含む)
・全角の漢数字文字(連続文字も含む)
※但し、単位文字の"億"以上の文字(億、兆、京、・・・)は除く
3)"条"の後に文字があってもなくても置換対象とする。
<置換後の文字列の条件>
1)"第"の前のタブ[\t]を、改行文字(1文字)に置換する。
2)"条"の後の文字列(ない場合も含む)の後に、改行文字(1文字)を挿入する。
ということで宜しいでしょうか?
以上の条件で「正規表現」を表すと以下のようになると思います。
注)秀丸エディタでの「正規表現」とします。
■正規表現での検索文字列&置換文字列(秀丸エディタ用)
検索文字列: \t(第[0-90-9一二三四五六七八九十零百千万]+条.*)
置換文字列: \n\1\n
以下は、上記の正規表現で置換を行った例です。
■置換例
※タブ文字は[\t]で表しています。
※各行の先頭の番号は行番号を意味します。
<置換前>
============================================================
01:第1条hoge1 //←置換対象外("第"の前にタブ[\t]がないため)
02:
03:\t\t第2条hoge2 //←置換対象
04:
05:abc\t第三十五条 hoge3 //←置換対象
06:
07:【第4条】hoge4 //←置換対象外("第"の前にタブ[\t]がないため)
08:
09:「\t第100条」 hoge5 //←置換対象
10:
11:\t第A条 hoge6 //←置換対象外("第"と"条"の間が数字でないため)
12:
13:\t第123条\t //←置換対象
============================================================
<置換後>
============================================================
01:第1条hoge1 //←置換対象外(置換なし)
02:
03:\t
04:第2条hoge2 //←置換対象(置換後)
05:
06:
07:abc
08:第三十五条 hoge3 //←置換対象(置換後)
09:
10:
11:【第4条】hoge4 //←置換対象外(置換なし)
12:
13:「
14:第100条」 hoge5 //←置換対象(置換後)
15:
16:
17:\t第A条 hoge6 //←置換対象外(置換なし)
18:
19:
20:第123条\t //←置換対象(置換後)
21
============================================================
上記例を踏み台にして、質問者さんの期待する結果になるように「正規表現」
をいろいろ弄って検証してみて下さい。
正規表現の詳細については、「秀丸エディタ」のヘルプをご覧下さい。
※ヘルプ画面の検索ワードに"正規表現"と入れて検索してみて下さい。
以上です。
まさにやりたいことを教えて頂く事ができて、とてもびっくりしました。
また、非常に詳しいご返答、とても嬉しいです&助かりました!
「タグ付き」というのがあったとは、気付きませんでした!
ありがとうございました!
No.3
- 回答日時:
ところで
\t第*.条*.
は
「タブ」「第」が0個以上、任意の一文字、「条」が0個以上、任意の一文字
にマッチする正規表現ですが、これは意図したものですか?
例えば、
(タブ)第第第第第XV
にもマッチします。
「第第第第第」が「第*」に
「X」が「.」に
XとVの間のなにもないところが「条*」に
「V」が「.」に
対応します。
ご指摘のパターン、全然気が付きませんでした。^^;
今回は、第の字がたくさんあるようなイレギュラーなデータを処理するわけではないので大丈夫です。
今後、このようなパターンに気付けるようになれそうです。
ありがとうございます。

No.2
- 回答日時:
補足要求
第*条の前に\tがありますが、これはタブになります。
タブで始まり、第*条の文字をどのようにされたいのでしょうか。
(タブで始まっていない第*条は無視してよいのでしょうか?)
最初の\nは、改行したということでしょうか。
最後の\nは、第*条・・・・の後に改行を更に付加したいと言うことでしょうか?
返還前の文字と
変換後の期待する結果を記述されると、もっと良い回答が得られるかと思います。
タブは、変換したいということです。
> 返還前の文字と
> 変換後の期待する結果を記述されると、もっと良い回答が得られるかと思います。
ご指摘ありがとうございます。
今後、よりよい質問の仕方ができそうで、とてもありがたい&嬉しいです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を保持したままセ...
-
各項目がダブルクォーテーショ...
-
正規表現で、特定の文字列を含...
-
VBA 置換文字がみつからない時
-
秀丸エディタで、「-」や「ー」...
-
Excel・ユーザーフォームの情報...
-
c++で積分のプログラムを実行し...
-
ダブルコーテーション 、"を二...
-
特定の列のみ置換を行いたい
-
秀丸での、正規表現を使った置換
-
スペースで区切られた氏名から...
-
SQL IIF と REPLACE のやりかた
-
正規表現でテキストの中身を置...
-
MATLAB 全て置換
-
c# ビルド直前にコードを置換で...
-
xmlファイル内の文字列置換
-
EXCEL警告「置換対象のデータが...
-
対称群はなぜそう呼ばれるので...
-
正規表現でURLを抽出したいと思...
-
正規表現 特定の文字列を含む行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現で、特定の文字列を含...
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
○文字目に文字挿入
-
csvデータ ダブルクォーテ...
-
C#で空白行を削除する方法
-
Excel・ユーザーフォームの情報...
-
csvデータのダブルクォーテーシ...
-
秀丸エディタで、「-」や「ー」...
-
フォントの色を保持したままセ...
-
Excel VBA 教えてください。 VB...
-
EXCEL警告「置換対象のデータが...
-
スペースで区切られた氏名から...
-
Eclipse 改行後のタブ
-
Excel VBA リストに一致したデ...
-
テキストボックスの文字列を置...
-
xmlファイル内の文字列置換
-
複数のパワーポイントファイル...
-
特定の列のみ置換を行いたい
-
ハングルを日本語に置換
おすすめ情報