このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

バッグ正規表現の事例

列(リスト)正規表現は既によく知られたものです。セット正規表現の応用例は、次の記事で述べています。

ここでは、バッグ(マルチセット)正規表現の例を挙げておきましょう。

XHTMLのheadの内容を単純化して、title, meta, linkだけに限定すると:

  1. titleは1回だけ必ず出現する。
  2. metaとlinkは何回(0回でも)出現してもよい。
  3. title, meta, linkの出現順序はどうでもよい。

となるでしょう。この内容モデルは、通常の列正規表現により ((meta|link)*, title, (meta|link)*) と書くこともできますが、「出現順序はどうでもよい」なら、列(リスト)ではなくてバッグと考えれば、(title, link*, meta*)という単純な正規表現でOK。記号「,」だと順序があるように思えるなら、(title & link* & meta*)とでもすればいいでしょう(実はこの記法、SGMLへの先祖返り)。

DublinCoreメタデータ項目の出現パターンなども、列よりはバッグと考えたほうが自然です。

(続く)