Dataviewで正規表現検索ができないかと情報を漁ってたら、見事にハマりました。結構苦戦したので(1・2時間くらい)今回怨嗟を込めてブログに記そうと思います。
まあ、一度覚えるとかなり使えるテクニックなので、備忘録として記録しておきます。
目次
結論
regexmatchを使いましょう。
regexmatch(pattern, string)
patternに検索条件(正規表現OK)、stringに検索する文字列・フロントマターを入れればいいと覚えておけばOK。
具体例
例1:フロントマター「read」に入ってる先頭文字列が「さ~ぞ」のファイルを検索
table
without ID link(file.link, default(title, file.name)) as "タイトル",
read as "読み"
from "01_Inbox" and #Words
where regexmatch("^[さ-ぞ]", read)
sort read asc
フロントマター「read」の先頭文字列が「さ・ざ・し・じ・す・ず・せ・ぜ・そ・ぞ」になっているものだけ抽出。whereの部分にregexmatch
を書いてふるいをかけるイメージ。
ちなみに「さ」と「ぞ」はUnicodeでも指定可能です。その際はwhere regexmatch("^[\u3055-\u305E]", read)
と記載すればOKです。
例2:フロントマター「title」の指定した文字列を検索
table
without ID link(file.link, default(title, file.name)) as "タイトル"
from "01_Inbox" and #MOC/Words
where regexmatch("単語集(.行)",title)
sort title asc
こちらもwhere regexmatch("単語集(.行)",title)
で正規表現を使用。フロントマター「title」に「単語集(〇行)」と書いてあるファイルだけ検索結果に反映します。
参考サイト
JavaScript・正規表現両方わからない人間だったので苦戦しました。私みたいに苦戦する人が一人でも減りますように……!!