こんにちは、相戸ゆづなです!
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」に「単語集(〇行)」と書いてあるファイルだけ検索結果に反映します。
参考サイト・書籍
https://blacksmithgu.github.io/obsidian-dataview/reference/functions/
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_expressions
JavaScript・正規表現両方わからない人間だったので苦戦しました。
みんなしっかり公式ドキュメントを読み込もうな……。