正規表現に実は今まで興味が無かった。
実際に知らなくても特に何も困らなかった。
でもパターンの書き方を何かの言語で覚えてしまえば他で使い回せる。
他の言語はもとより grep コマンドでさえ、と今頃知った。
これは勉強しといたほうが良いかも。
でも使う手段は言語によって違うんだよなぁ。
いっそ GLib で使えればどんな言語でも gir で同じ手段でイケるのに。
Perl-compatible regular expressions: GLib Reference Manual
って普通にあるじゃん、perl と同じってことね。
Gjs でコイツと JavaScript の RegExp を比べてみよう。
画像の拡張子が最後に付いているかを大小文字区別なく探すコード。
#!/usr/bin/gjs const GLib = imports.gi.GLib; const ARRAY = ["001.jpg", "002.JPEG", "003.Png", "004.gif", "jpeg.gif"]; const PATTERN = "\.(jpe?g|png)$"; // JavaScript RegExp ARRAY.forEach(function(s) { let re = new RegExp(PATTERN, "i"); print(re.test(s)); }); print("----------"); // GLib Regex ARRAY.forEach(function(s) { print(GLib.Regex.match_simple(PATTERN, s, GLib.RegexCompileFlags.CASELESS, 0)); }); /* @ Python import re for s in ARRAY: res = True if re.search(PATTERN, s, re.I) else False print(res) */ /* output true true true false false ---------- true true true false false */
うん、見事に同じパターンが使えるのね。
コレで Vala だろうが何だろうが同様に使える。
Python は真偽値を戻さず mach Object 自体が True って変。
そりゃ Python なんだから変だと言われても何を今更と思えるのが凄い。