grepNo.31396
Cyber さん 12/07/25 16:39
 
「以下、xxxという」のxxxが何であるか不明なときに、grep検索をする方法を
教えてください。つまり「以下、〜という」というセンテンスをすべてgrep検索する
にはどうすればいいですか?xxxには文字が入るかもしれないし、数字が入るかも
しれません。大文字小文字の場合もあり得ます。どうすればいいですか?

[ ]
RE:31396 grepNo.31397
秀丸担当 さん 12/07/25 17:16
 

正規表現をONにして、正規表現を書くとできます。

こういうパターンは基本的なところなので、正規表現の意味を把握してもらえる
と、どういうふうに書けばいいのかが分かりやすいです。

正規表現で任意の一文字(英字でも数字でもなんでも)を表すには「.」と書き
ます。
例えば「以下、.という」という検索文字列で検索すると、
「以下、Aという」
「以下、1という」
などにマッチします。

しかし「以下、AAという」など、2文字以上にはマッチしません。
検索文字列を「以下、..という」にすれば、2文字にはマッチしますが、今度は
1文字は3文字以上にはマッチしません。

 参考ヘルプ:
 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_Regular_Period.html



2文字以上にもマッチさせたいときは、「*」や「+」を使います。
何かも文字の後に「*」を付けると、「*」を付けた直前の文字が0回以上あると
きにマッチします。
検索文字列が「あい*」の場合は、「*」の直前は「い」なので、「い」が0回以
上あるとマッチします。
例えば、
「あ」
「あい」
「あいいい」
などに全てマッチします。

0回にもマッチして都合が悪い場合は「+」を使います。
検索文字列が「あい+」の場合は、0回にはマッチしないので、「あ」はマッチ
せず、
「あい」
「あいいい」
にマッチします。

 参考ヘルプ:
 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_Regular_Asterisk.html



これらを組み合わせて「以下、.*という」という検索文字列にすると、
「任意の一文字」が「0回以上」という意味になります。
例えば
「以下、という」
「以下、Aという」
「以下、AAAAAAという」
「以下、1234という」
全てにマッチします。

「以下、という」だけにはマッチさせたくない場合は、「以下、.+という」にし
ます。


正規表現を使う場合は、「.*」と「.+」の組み合わせは使うことが多いので、他
のケースでも役に立つと思います。

組み合わせ方を変えるといろいろ応用できると思います。
正規表現についての詳細は、ヘルプを見てほしいです。

[ ]
RE:31397 grepNo.31398
Cyber さん 12/07/25 19:26
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>正規表現についての詳細は、ヘルプを見てほしいです。


ご丁寧にありがとうございます。

[ ]
RE:31397 grepNo.31416
Cyber さん 12/07/30 15:27
 
>
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>正規表現についての詳細は、ヘルプを見てほしいです。



半角数字の一桁は\ですか?それとも[\c]ですか?[\C]ですか?

二桁は\\ですか?それとも[\c][\c]ですか?[\C][\C]ですか

二桁以上三ケタ以内はどうやってあらわしますか?

全角の数字はどうやってあらわしますか?


[ ]
RE:31416 grepNo.31417
秀丸担当 さん 12/07/30 16:32
 

>半角数字の一桁は\ですか?それとも[\c]ですか?[\C]ですか?
>
>二桁は\\ですか?それとも[\c][\c]ですか?[\C][\C]ですか

ヘルプの「目次」−「検索系コマンド」−「正規表現」のところに書いてありま
す。
まずは[その他]→[秀丸エディタ−ヘルプ]でヘルプを開いて、ヘルプを見てほし
いです。

 参考ヘルプ:
 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_Regular.html


正規表現を試すときは、grepや置換で試すとわかりづらいので、まずは検索で試
してみるといいです。
検索ダイアログで検索してみて、標準のキー割り当てでF3やShift+F3で下候補や
上候補でどういう文字列がヒットしているかを調べてみて、ヘルプと照らしあわ
せてみるとわかりやすいと思います。

 参考過去スレッド:
 http://www.maruo.co.jp/hidesoft/2/x30518_.html



>二桁以上三ケタ以内はどうやってあらわしますか?

この場合はちょっとややこしいです。
「前方不一致」と「直前のパターンが0回または1回」を組み合わせて、以下のよ
うにするといいと思います。

(?<!\d)\d\d\d?

>全角の数字はどうやってあらわしますか?

やり方は2つあって、1つは、「正規表現」と「あいまい検索」を両方ONにする
と、あいまい検索で全角と半角を同一視するようになって、そのままの正規表現
でできます。

もう1つは、「あいまい検索」がOFFの場合で、

[0-9]

と正規表現を書くとできます。
\dというのも[0-9]を省略表記しただけのもので、実際は半角数字は

[0-9]

と書くのと同じで、それを全角で書いたものが[0-9]になります。

[0-9]のほうをまず覚えておくとわかりやすいです。
[a-z]ではアルファベットにできますし、[0-9a-z]というように数字とアルファ
ベットという組み合わせにもでき、全角にもできますし、いろいろ応用できると
思います。

[ ]
RE:31417 grepNo.31418
Sa さん 12/07/30 21:48
 
>>二桁以上三ケタ以内はどうやってあらわしますか?
>
>この場合はちょっとややこしいです。
>「前方不一致」と「直前のパターンが0回または1回」を組み合わせて、以下のよ
>うにするといいと思います。
>
>(?<!\d)\d\d\d?


perlのエンジンにある使い方が以前実装されてませんでしたっけ?
\d{2,3}
たぶんしてたと思いますけどしてなかったらしておいてほしいです。

[ ]
RE:31418 grepNo.31419
Iranoan さん 12/07/30 22:08
 
 Sa さん今日は、一ユーザの Iranoan です。
> perlのエンジンにある使い方が以前実装されてませんでしたっけ?
> \d{2,3}
 HmJre.dll のヘルプ HmJre.hlp に記載がありますよ。
 実装されています。

[ ]