2004-03-24 [長年日記]

[Q3] マクロから正規表現のマッチした部分を取得

できるようになりました(BTS:537)。

@Progn(@RegexFind(%Subject,/[\[(][a-zA-Z0-9 \/-]+[: ]0*([0-9]+)[\])]/),
       $_1)

のようにすると、多くのMLでシーケンス番号が取れると思います。

本日のツッコミ(全8件) [ツッコミを入れる]
# H.Aoyama (2004-03-25 03:42)

早速試してみたところ(上記程の汎用性は考えてませんでしたが)ばっちりうまく行きました! ありがとうございます.<br>グローバル変数の話ではないですが,Regexシリーズを利用すると,本当に色々出来そうですね. 例えば「重要」とか「至急」とかいう文字列を捕まえて★だすとか(^^ゞ 今は色変えてますけど. 後は,振り分けルールで「★」ついてたら「重要フォルダ」に入れる,とかがあると面白そうですかね.<br>#最初から %Subject に「重要」があったら..って判断すればすむ問題..かもですが..まぁ,雑談ベースって事でご容赦を(^^ゞ.

# Satoshi Nakamura (2004-03-25 04:43)

colors.xmlやrules.xmlは、2.1系の.colorsのように単純にマクロを実行してフォルダ名や色を返すというようにした方が自由度があがって色々できるのですが、GUIでの設定などと相性が極端に悪くなってしまうんですよね(事実上不可能)。<br><br>そういう風になっていると、@RegexXXXでマッチした結果から分岐するとか色々できるのですが。

# miri (2004-03-27 17:47)

rules.xmlの中で正規表現で受信したメールのReceived Headerを検索したいんですが、どうもRegexシリーズの使い方が理解できません...。 どこかにサンプルないですかね(^^ゞ

# Satoshi Nakamura (2004-03-27 18:09)

サンプルは今のところあまりないですね。仕様自体は、<http://q3.snak.org/bts/user.cgi?project=Q3&action=view_report&id=191>にあります。<br><br>たとえばReceivedヘッダに正規表現で指定された何かが含まれているかどうかを調べるならば、<br>@Not(@Equal(@RegexFind(Received, /regex/),4294967295))<br>とか書くと良さそうです(なんだかわかりにくいですけど)。

# Satoshi Nakamura (2004-03-27 18:09)

URLが間違ってました。こっちです。<br><http://q3.snak.org/bts/guest.cgi?project=Q3&action=view_report&id=191>

# miri (2004-03-28 18:09)

すみません、昨日はBTS191がなぜか探し出せなくて、つい馬鹿な質問をしてしまいました。<br>で、実際教えていただいたようなマクロを試してみたんですが、どうもヒットしません。<br>「結果が最初に真になったルールのアクションを実行」するのがrules.xmlのmatchの定義なので、<br><rule match="@Not(@Equal(@RegexFind(Received, /mail[0-9][0-9]\.mailer\.co\.jp/),4294967295))"><br><move folder="Inbox/mailer.co.jp"/><br></rule><br>なんてルールを定義してみたんですが、全件マッチしちゃうという...

# Satoshi Nakamura (2004-03-29 01:51)

数値リテラルの扱いが変ですね。そっちは後で考えるとして、<br><br>@Not(<br> @Equal(<br> @RegexFind(Received,<br> /mail[0-9][0-9]\.mailer\.co\.jp/),<br> -1))<br><br>でいけそうです。

# miri (2004-03-29 18:34)

ありがとうございます、無事いけました。<br>ReceivedヘッダでHELPをするのは2回目のような気もします(^^;


トップ «前の日記(2004-03-23) 最新 次の日記(2004-03-25)»