Project

General

Profile

Actions

Regex » History » Revision 2

« Previous | Revision 2/7 (diff) | Next »
Yingdi Yu, 03/19/2014 11:19 AM


NDN Regular Expression

NDN regular expression matching is done at two levels: one at the name level and one at the name component level.

We use < and > to enclose a name component matcher which specifies the pattern of a name component.
The component pattern is expressed using the Perl Regular Expression Syntax.
For example, <ab*c> can match the 1st, 3rd, and 4th components of "/ac/dc/abc/abbc", but it cannot match the 2nd component.
A special case is that <> is a wildcard matcher that can match ANY component.

Note that a component match can match only one name component.
In order to match a name, you need to specify the pattern of a name based on the name component matchers.
For example, <ndn><edu><ucla> can match the name "/ndn/edu/ucla".
In order to describe a more complicated name pattern, we borrow some syntaxes from the standard regular expressions.

NDN Regex Syntax

Anchors

A '' character shall match the start of a name.
For example, ^<ndn> shall match any names starting with a component "ndn", and it will exclude a name like "/local/broadcast".

A '$' character shall match the end of a name.
For example, ^<ndn><edu>$ shall match only one name: "/ndn/edu".

A NDN regular expression is built on the component matcher extended from the standard regex by simply treating a component matcher as a single character in standard regex.
For example,
^<ndn> can match any names starting with a component "ndn";
<test>$ can match any names ending with a component "test";
^[^<ndn>] can match any names that do not start with a component "ndn";
^([^<DNS>])<DNS>(<>*)<NS> can match a NDN DNS data name, and you can use back reference to extract the part enclosed by ( and )
("\1\2" can extract /ndn/edu/ucla/irl from /ndn/edu/ucla/DNS/irl/NS/123456.

Updated by Yingdi Yu over 10 years ago · 7 revisions