[Mew-dist 07511] Re: Specify the Folder by Absolute Path

Yoshiaki Kasahara kasahara at example.com
1999年 2月 18日 (木) 14:45:14 JST


笠原@九大です。

On Wed, 10 Feb 1999 12:50:20 +0900,
	SAKAI Kiyotaka <ksakai at example.com> said:

> という正規表現で定義されていますので、最後の : の後が上の正規表現にマッ
> チしたときのみ range として扱う (マッチしないときはファイル名として扱
> う) という方法もあるかと思います。

これを採用してみました。

特定の文字でエスケープするのは、エスケープ文字をエスケープしたくなったり、
エスケープ文字で終わってたりした時どうするのかとか考えはじめるとめんどく
さいのですが、簡単に正規表現とかで実現する方法があったりするのでしょうか。
imgrep の時は、簡単な lexical analyzer を書いてしまいましたが……。

> # 上の正規表現にマッチするファイル名を扱えないのは仕様ということで。

こういうパス名を使いたい場合は、最後に陽に range (例えば ':all') をつけ
ればそこから切るので大丈夫というふうにしたつもりです。
-- 
九州大学大型計算機センター 総合情報伝達システム運用センター 
笠原義晃                                                   & ~ __-^-_/~ 
kasahara at example.com                                  ~   \___/

-------------- next part --------------
--- imgrep.in.o	Thu Feb 18 14:28:15 1999
+++ imgrep.in	Thu Feb 18 14:29:47 1999
@@ -47,6 +47,7 @@
 # regexp for range syntax (sequence not supported)
 my $range_element = '(\\d+|cur|first|last|next|prev|new)';
 my $range_regexp = "($range_element(-$range_element|:[+-]?\\d+)?|all)";
+my $ranges_regexp = "$range_regexp(,$range_regexp)?";
 
 $EXPLANATION = "
 $Prog :: Internet Message GREP
@@ -124,7 +125,8 @@
 
  FOLDER:
     foreach (@opt_src) {
-	my ($folder, $ranges) = (/([^:]+)(?::)?(.*)?/);
+	my ($folder, $ranges) = (/^(.*?)(:$ranges_regexp)?$/);
+	$ranges =~ s/^:(.*)$/$1/;
 	my $folder_dir;
 	my @ranges = split(',', $ranges);
 	my @messages = ();


Mew-dist メーリングリストの案内