regex_builder 0.1.0+2 copy "regex_builder: ^0.1.0+2" to clipboard
regex_builder: ^0.1.0+2 copied to clipboard

outdated

A declarative builder for Regex.

A declarative builder for Regex.

Features #

A declarative builder for Regex.

Getting started #

Usage #

final usernameRegex = Regex.builder(
  components: [
    Anchor.startOfLine,                             // ^
    Repeat(
      CharacterClass.union([
        CharacterClass.letter(LetterCase.lower),    // [a-z]
        CharacterClass.number(),                    // [0-9]
        CharacterClass('_-'),                       // [_-]
      ]),                                           // [a-z0-9_-]
      range: RepeatRange.between(3, 16),
    ),                                              // [a-z0-9_-]{3,16}
    Anchor.endOfLine,                               // $
  ],
);                                                  // ^[a-z0-9_-]{3,16}$
final letterAndNumbers = CharacterClass.union([
  CharacterClass.letter(LetterCase.lower),          // [a-z]
  CharacterClass.number(),                          // [0-9]
]);                                                 // [a-z0-9]

final regex = Regex.builder(
  components: [
    Anchor.startOfLine,                             // ^
    OneOrMore(
      CharacterClass.union([
        letterAndNumbers,                           // [a-z0-9]
        CharacterClass.dot,                         // [.]
      ]),                                           // [a-z0-9.]
    ),                                              // [a-z0-9.]+
    Regex.literal('@'),                             // @
    OneOrMore(letterAndNumbers),                    // [a-z0-9]+
    Regex.literal('.'),                             // \.
    OneOrMore(
      CharacterClass.letter(LetterCase.lower)       // [a-z]
    ),                                              // [a-z]+
    Optionally(Regex.builder(
      components: [
        Regex.literal('.'),                         // \.
        OneOrMore(
          CharacterClass.letter(LetterCase.lower)   // a-z
        ),                                          // [a-z]+
      ],
    )),                                             // (?:\.[a-z])+?
    Anchor.endOfLine,                               // $
  ],
  caseSensitive: false,
  multiLine: true,
);                                                  // ^[a-z0-9.]+@[a-z0-9]+\.[a-z]+(?:\.[a-z]+)?$
final regex = Regex.builder(components: [
  Regex.builder(components: [
    Regex.literal('<'),                             // <
    Capture(
      Regex.builder(
        components: [
          CharacterClass.letter(LetterCase.lower),  // [a-z]
          ZeroOrMore(
            CharacterClass.union([
              CharacterClass.letter(),              // [a-zA-Z]
              CharacterClass.number(),              // [0-9]
            ]),                                     // [a-zA-Z0-9]
          ),                                        // [a-zA-Z0-9]*
        ],
      ),                                            // [a-z][a-zA-Z0-9]*
      name: 'tag',
    ),                                              // (?<tag>[a-z][a-zA-Z0-9]*)?
    Regex.literal('>'),                             // >
  ]),                                               // <(?<tag>[a-z][a-zA-Z0-9]*)>
  Capture(
    OneOrMore(Regex.any(), greedy: false),          // .+?
  ),                                                // (.+?)
  Regex.literal('</'),                              // </
  Reference('tag'),                                 // \k<tag>
  Regex.literal('>'),                               // >
]);                                                 // <(?<tag>[a-z][a-zA-Z0-9]*)>(.+?)</\k<tag>>

final html = '<h1>Hello, world!</h1><a>Google</a>';

for (final match in regex.allMatches(html)) {
  print('Content: ${match.group(0)}');
  print('Tag: ${match.group(1)}');
  print('Value: ${match.group(2)}');
}

// Output
// Content: <h1>Hello, world!</h1>
// Tag: h1
// Value: Hello, world!
// Content: <a>Google</a>
// Tag: a
// Value: Google

Additional information #

9
likes
0
points
1
downloads

Publisher

verified publisherailton.dev

Weekly Downloads

A declarative builder for Regex.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

meta

More

Packages that depend on regex_builder