mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-21 03:18:32 +00:00
876 lines
160 KiB
HTML
876 lines
160 KiB
HTML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<!-- This file is generated by Nim. -->
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
|
|
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
|
|
|
|
<!-- Google fonts -->
|
|
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
|
|
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
|
|
|
|
<!-- CSS -->
|
|
<title>regex</title>
|
|
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
|
|
|
|
<script type="text/javascript" src="dochack.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
function main() {
|
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
|
for (var i = 0; i < pragmaDots.length; i++) {
|
|
pragmaDots[i].onclick = function(event) {
|
|
// Hide tease
|
|
event.target.parentNode.style.display = "none";
|
|
// Show actual
|
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
|
}
|
|
}
|
|
|
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
function switchTheme(e) {
|
|
if (e.target.checked) {
|
|
document.documentElement.setAttribute('data-theme', 'dark');
|
|
localStorage.setItem('theme', 'dark');
|
|
} else {
|
|
document.documentElement.setAttribute('data-theme', 'light');
|
|
localStorage.setItem('theme', 'light');
|
|
}
|
|
}
|
|
|
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
|
|
|
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
|
if (currentTheme) {
|
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
|
|
|
if (currentTheme === 'dark') {
|
|
toggleSwitch.checked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
window.addEventListener('DOMContentLoaded', main);
|
|
</script>
|
|
|
|
</head>
|
|
<body>
|
|
<div class="document" id="documentId">
|
|
<div class="container">
|
|
<h1 class="title">regex</h1>
|
|
<div class="row">
|
|
<div class="three columns">
|
|
<div class="theme-switch-wrapper">
|
|
<label class="theme-switch" for="checkbox">
|
|
<input type="checkbox" id="checkbox" />
|
|
<div class="slider round"></div>
|
|
</label>
|
|
<em>Dark Mode</em>
|
|
</div>
|
|
<div id="global-links">
|
|
<ul class="simple">
|
|
<li>
|
|
<a href="theindex.html">Index</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="searchInputDiv">
|
|
Search: <input type="text" id="searchInput"
|
|
onkeyup="search()" />
|
|
</div>
|
|
<div>
|
|
Group by:
|
|
<select onchange="groupBy(this.value)">
|
|
<option value="section">Section</option>
|
|
<option value="type">Type</option>
|
|
</select>
|
|
</div>
|
|
<ul class="simple simple-toc" id="toc-list">
|
|
<li><a class="reference" id="syntax_toc" href="#syntax">Syntax</a></li>
|
|
<ul class="simple"><li><a class="reference" id="syntax-matching-one-character_toc" href="#syntax-matching-one-character">Matching one character</a></li>
|
|
<li><a class="reference" id="syntax-character-classes_toc" href="#syntax-character-classes">Character classes</a></li>
|
|
<li><a class="reference" id="syntax-composites_toc" href="#syntax-composites">Composites</a></li>
|
|
<li><a class="reference" id="syntax-repetitions_toc" href="#syntax-repetitions">Repetitions</a></li>
|
|
<li><a class="reference" id="syntax-empty-matches_toc" href="#syntax-empty-matches">Empty matches</a></li>
|
|
<li><a class="reference" id="syntax-grouping-and-flags_toc" href="#syntax-grouping-and-flags">Grouping and flags</a></li>
|
|
<li><a class="reference" id="syntax-escape-sequences_toc" href="#syntax-escape-sequences">Escape sequences</a></li>
|
|
<li><a class="reference" id="syntax-perl-character-classes-unicode-friendly_toc" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></li>
|
|
<li><a class="reference" id="syntax-ascii-character-classes_toc" href="#syntax-ascii-character-classes">ASCII character classes</a></li>
|
|
<li><a class="reference" id="syntax-lookaround-assertions_toc" href="#syntax-lookaround-assertions">Lookaround Assertions</a></li>
|
|
</ul><li><a class="reference" id="examples_toc" href="#examples">Examples</a></li>
|
|
<ul class="simple"><li><a class="reference" id="examples-multiple-captures_toc" href="#examples-multiple-captures">Multiple captures</a></li>
|
|
<li><a class="reference" id="examples-verbose-mode_toc" href="#examples-verbose-mode">Verbose Mode</a></li>
|
|
<li><a class="reference" id="examples-find-all_toc" href="#examples-find-all">Find All</a></li>
|
|
<li><a class="reference" id="examples-match-macro_toc" href="#examples-match-macro">Match Macro</a></li>
|
|
</ul><li>
|
|
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
|
|
<ul class="simple simple-toc-section">
|
|
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
|
|
<ul class="simple simple-toc-section">
|
|
<ul class="simple nested-toc-section">contains
|
|
<li><a class="reference" href="#contains%2Cstring%2CRegex"
|
|
title="contains(s: string; pattern: Regex): bool">contains,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">isInitialized
|
|
<li><a class="reference" href="#isInitialized%2CRegex"
|
|
title="isInitialized(re: Regex): bool">isInitialized,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">replace
|
|
<li><a class="reference" href="#replace%2Cstring%2CRegex%2Cstring%2Cint"
|
|
title="replace(s: string; pattern: Regex; by: string; limit = 0): string">replace,<wbr>string,<wbr>Regex,<wbr>string,<wbr>int</a></li>
|
|
<li><a class="reference" href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint"
|
|
title="replace(s: string; pattern: Regex; by: proc (m: RegexMatch; s: string): string;
|
|
limit = 0): string">replace,<wbr>string,<wbr>Regex,<wbr>proc(RegexMatch,<wbr>string),<wbr>int</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">escapeRe
|
|
<li><a class="reference" href="#escapeRe%2Cstring"
|
|
title="escapeRe(s: string): string">escapeRe,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">split
|
|
<li><a class="reference" href="#split%2Cstring%2CRegex"
|
|
title="split(s: string; sep: Regex): seq[string]">split,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">startsWith
|
|
<li><a class="reference" href="#startsWith%2Cstring%2CRegex%2Cint"
|
|
title="startsWith(s: string; pattern: Regex; start = 0): bool">startsWith,<wbr>string,<wbr>Regex,<wbr>int</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">splitIncl
|
|
<li><a class="reference" href="#splitIncl%2Cstring%2CRegex"
|
|
title="splitIncl(s: string; sep: Regex): seq[string]">splitIncl,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">match
|
|
<li><a class="reference" href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint"
|
|
title="match(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">match,<wbr>string,<wbr>Regex,<wbr>RegexMatch,<wbr>int</a></li>
|
|
<li><a class="reference" href="#match%2Cstring%2CRegex"
|
|
title="match(s: string; pattern: Regex): bool">match,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">toPattern
|
|
<li><a class="reference" href="#toPattern%2Cstring"
|
|
title="toPattern(s: string): Regex">toPattern,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">findAll
|
|
<li><a class="reference" href="#findAll%2Cstring%2CRegex%2Cint"
|
|
title="findAll(s: string; pattern: Regex; start = 0): seq[RegexMatch]">findAll,<wbr>string,<wbr>Regex,<wbr>int</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">findAllBounds
|
|
<li><a class="reference" href="#findAllBounds%2Cstring%2CRegex%2Cint"
|
|
title="findAllBounds(s: string; pattern: Regex; start = 0): seq[Slice[int]]">findAllBounds,<wbr>string,<wbr>Regex,<wbr>int</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">groupLastCapture
|
|
<li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring"
|
|
title="groupLastCapture(m: RegexMatch; i: int; text: string): string">groupLastCapture,<wbr>RegexMatch,<wbr>int,<wbr>string</a></li>
|
|
<li><a class="reference" href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring"
|
|
title="groupLastCapture(m: RegexMatch; groupName: string; text: string): string">groupLastCapture,<wbr>RegexMatch,<wbr>string,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">group
|
|
<li><a class="reference" href="#group%2CRegexMatch%2Cint"
|
|
title="group(m: RegexMatch; i: int): seq[Slice[int]]">group,<wbr>RegexMatch,<wbr>int</a></li>
|
|
<li><a class="reference" href="#group%2CRegexMatch%2Cint%2Cstring"
|
|
title="group(m: RegexMatch; i: int; text: string): seq[string]">group,<wbr>RegexMatch,<wbr>int,<wbr>string</a></li>
|
|
<li><a class="reference" href="#group%2CRegexMatch%2Cstring"
|
|
title="group(m: RegexMatch; s: string): seq[Slice[int]]">group,<wbr>RegexMatch,<wbr>string</a></li>
|
|
<li><a class="reference" href="#group%2CRegexMatch%2Cstring%2Cstring"
|
|
title="group(m: RegexMatch; groupName: string; text: string): seq[string]">group,<wbr>RegexMatch,<wbr>string,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">groupNames
|
|
<li><a class="reference" href="#groupNames%2CRegexMatch"
|
|
title="groupNames(m: RegexMatch): seq[string]">groupNames,<wbr>RegexMatch</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">findAndCaptureAll
|
|
<li><a class="reference" href="#findAndCaptureAll%2Cstring%2CRegex"
|
|
title="findAndCaptureAll(s: string; pattern: Regex): seq[string]">findAndCaptureAll,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">endsWith
|
|
<li><a class="reference" href="#endsWith%2Cstring%2CRegex"
|
|
title="endsWith(s: string; pattern: Regex): bool">endsWith,<wbr>string,<wbr>Regex</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">re
|
|
<li><a class="reference" href="#re%2Cstring"
|
|
title="re(s: string): Regex">re,<wbr>string</a></li>
|
|
<li><a class="reference" href="#re%2Cstaticstring"
|
|
title="re(s: static string): static[Regex]">re,<wbr>staticstring</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">groupFirstCapture
|
|
<li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring"
|
|
title="groupFirstCapture(m: RegexMatch; i: int; text: string): string">groupFirstCapture,<wbr>RegexMatch,<wbr>int,<wbr>string</a></li>
|
|
<li><a class="reference" href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring"
|
|
title="groupFirstCapture(m: RegexMatch; groupName: string; text: string): string">groupFirstCapture,<wbr>RegexMatch,<wbr>string,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">find
|
|
<li><a class="reference" href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint"
|
|
title="find(s: string; pattern: Regex; m: var RegexMatch; start = 0): bool">find,<wbr>string,<wbr>Regex,<wbr>RegexMatch,<wbr>int</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">groupsCount
|
|
<li><a class="reference" href="#groupsCount%2CRegexMatch"
|
|
title="groupsCount(m: RegexMatch): int">groupsCount,<wbr>RegexMatch</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">rex
|
|
<li><a class="reference" href="#rex%2Cstring"
|
|
title="rex(s: string): RegexLit">rex,<wbr>string</a></li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a class="reference reference-toplevel" href="#15" id="65">Iterators</a>
|
|
<ul class="simple simple-toc-section">
|
|
<li><a class="reference" href="#group.i%2CRegexMatch%2Cint"
|
|
title="group(m: RegexMatch; i: int): Slice[int]">group</a></li>
|
|
<li><a class="reference" href="#group.i%2CRegexMatch%2Cstring"
|
|
title="group(m: RegexMatch; s: string): Slice[int]">group</a></li>
|
|
<li><a class="reference" href="#findAll.i%2Cstring%2CRegex%2Cint"
|
|
title="findAll(s: string; pattern: Regex; start = 0): RegexMatch">findAll</a></li>
|
|
<li><a class="reference" href="#findAllBounds.i%2Cstring%2CRegex%2Cint"
|
|
title="findAllBounds(s: string; pattern: Regex; start = 0): Slice[int]">findAllBounds</a></li>
|
|
<li><a class="reference" href="#split.i%2Cstring%2CRegex"
|
|
title="split(s: string; sep: Regex): string">split</a></li>
|
|
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a class="reference reference-toplevel" href="#17" id="67">Macros</a>
|
|
<ul class="simple simple-toc-section">
|
|
<li><a class="reference" href="#match.m%2Cstring%2CRegexLit%2Cuntyped"
|
|
title="match(text: string; regex: RegexLit; body: untyped): untyped">match</a></li>
|
|
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a class="reference reference-toplevel" href="#19" id="69">Exports</a>
|
|
<ul class="simple simple-toc-section">
|
|
|
|
</ul>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="nine columns" id="content">
|
|
<div id="tocRoot"></div>
|
|
|
|
<p class="module-desc">A library for parsing, compiling, and executing regular expressions. The match time is linear in the length of the text and the regular expression. So, it can handle input from untrusted users. The syntax is similar to PCRE but lacks a few features that can not be implemented while keeping the space/time complexity guarantees, ex: backreferences.
|
|
<h1><a class="toc-backref" id="syntax" href="#syntax">Syntax</a></h1>
|
|
<h2><a class="toc-backref" id="syntax-matching-one-character" href="#syntax-matching-one-character">Matching one character</a></h2><pre class="listing"><span class="Operator">.</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Identifier">includes</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">s</span> <span class="Identifier">flag</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span>
|
|
<span class="Operator">\</span><span class="Identifier">pN</span> <span class="Identifier">One</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span>
|
|
<span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">PN</span> <span class="Identifier">Negated</span> <span class="Identifier">one</span><span class="Operator">-</span><span class="Identifier">letter</span> <span class="Identifier">name</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span>
|
|
<span class="Operator">\</span><span class="Identifier">P</span><span class="Punctuation">{</span><span class="Identifier">Greek</span><span class="Punctuation">}</span> <span class="Identifier">negated</span> <span class="Identifier">Unicode</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Identifier">general</span> <span class="Identifier">category</span> <span class="Keyword">or</span> <span class="Identifier">script</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-character-classes" href="#syntax-character-classes">Character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">either</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">or</span> <span class="Identifier">z</span> <span class="Punctuation">(</span><span class="Identifier">union</span><span class="Punctuation">)</span><span class="Operator">.</span>
|
|
<span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">xyz</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">except</span> <span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span> <span class="Keyword">and</span> <span class="Identifier">z</span><span class="Operator">.</span>
|
|
<span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span> <span class="Identifier">A</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Identifier">matching</span> <span class="Identifier">any</span> <span class="Identifier">character</span> <span class="Keyword">in</span> <span class="Identifier">range</span> <span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Operator">.</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Operator">^</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Negated</span> <span class="Identifier">ASCII</span> <span class="Identifier">character</span> <span class="Identifier">class</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">Escaping</span> <span class="Keyword">in</span> <span class="Identifier">character</span> <span class="Identifier">classes</span> <span class="Punctuation">(</span><span class="Identifier">matching</span> <span class="Punctuation">[</span> <span class="Keyword">or</span> <span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-composites" href="#syntax-composites">Composites</a></h2><pre class="listing"><span class="Identifier">xy</span> <span class="Identifier">concatenation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Identifier">followed</span> <span class="Identifier">by</span> <span class="Identifier">y</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">|</span><span class="Identifier">y</span> <span class="Identifier">alternation</span> <span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Keyword">or</span> <span class="Identifier">y</span><span class="Punctuation">,</span> <span class="Identifier">prefer</span> <span class="Identifier">x</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-repetitions" href="#syntax-repetitions">Repetitions</a></h2><pre class="listing"><span class="Identifier">x</span><span class="Operator">*</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">+</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">*?</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">+?</span> <span class="Identifier">one</span> <span class="Keyword">or</span> <span class="Identifier">more</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Operator">??</span> <span class="Identifier">zero</span> <span class="Keyword">or</span> <span class="Identifier">one</span> <span class="Keyword">of</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">greedy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Identifier">m</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">at</span> <span class="Identifier">most</span> <span class="Identifier">m</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">,</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">at</span> <span class="Identifier">least</span> <span class="Identifier">n</span> <span class="Identifier">x</span> <span class="Punctuation">(</span><span class="Identifier">ungreedy</span><span class="Operator">/</span><span class="Identifier">lazy</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span><span class="Punctuation">{</span><span class="Identifier">n</span><span class="Punctuation">}</span><span class="Operator">?</span> <span class="Identifier">exactly</span> <span class="Identifier">n</span> <span class="Identifier">x</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-empty-matches" href="#syntax-empty-matches">Empty matches</a></h2><pre class="listing"><span class="Operator">^</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Identifier">start</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span>
|
|
<span class="Operator">$</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Keyword">or</span> <span class="Keyword">end</span><span class="Operator">-</span><span class="Keyword">of</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">A</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Identifier">beginning</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">only</span> <span class="Identifier">the</span> <span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">text</span> <span class="Punctuation">(</span><span class="Identifier">even</span> <span class="Identifier">with</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span> <span class="Identifier">enabled</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">b</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">on</span> <span class="Identifier">one</span> <span class="Identifier">side</span> <span class="Keyword">and</span> <span class="Operator">\</span><span class="Identifier">W</span><span class="Punctuation">,</span> <span class="Operator">\</span><span class="Identifier">A</span><span class="Punctuation">,</span> <span class="Keyword">or</span> <span class="Operator">\</span><span class="Identifier">z</span> <span class="Identifier">on</span> <span class="Identifier">other</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">B</span> <span class="Keyword">not</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">word</span> <span class="Identifier">boundary</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-grouping-and-flags" href="#syntax-grouping-and-flags">Grouping and flags</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">numbered</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">indexed</span> <span class="Identifier">by</span> <span class="Identifier">opening</span> <span class="Identifier">parenthesis</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">P</span><span class="Operator"><</span><span class="Identifier">name</span><span class="Operator">></span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">named</span> <span class="Punctuation">(</span><span class="Identifier">also</span> <span class="Identifier">numbered</span><span class="Punctuation">)</span> <span class="Identifier">capture</span> <span class="Identifier">group</span> <span class="Punctuation">(</span><span class="Identifier">allowed</span> <span class="Identifier">chars</span><span class="Punctuation">:</span> <span class="Punctuation">[</span><span class="Identifier">_0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">zA</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span> <span class="Identifier">group</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Identifier">within</span> <span class="Identifier">current</span> <span class="Identifier">group</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?</span><span class="Identifier">flags</span><span class="Punctuation">:</span><span class="Identifier">exp</span><span class="Punctuation">)</span> <span class="Identifier">set</span> <span class="Identifier">flags</span> <span class="Keyword">for</span> <span class="Identifier">exp</span> <span class="Punctuation">(</span><span class="Identifier">non</span><span class="Operator">-</span><span class="Identifier">capturing</span><span class="Punctuation">)</span></pre><p>Flags are each a single character. For example, (?x) sets the flag x and (?-x) clears the flag x. Multiple flags can be set or cleared at the same time: (?xy) sets both the x and y flags, (?x-y) sets the x flag and clears the y flag, and (?-xy) clears both the x and y flags.</p>
|
|
<pre class="listing"><span class="Identifier">i</span> <span class="Keyword">case</span><span class="Operator">-</span><span class="Identifier">insensitive</span><span class="Punctuation">:</span> <span class="Identifier">letters</span> <span class="Identifier">match</span> <span class="Identifier">both</span> <span class="Identifier">upper</span> <span class="Keyword">and</span> <span class="Identifier">lower</span> <span class="Keyword">case</span>
|
|
<span class="Identifier">m</span> <span class="Identifier">multi</span><span class="Operator">-</span><span class="Identifier">line</span> <span class="Identifier">mode</span><span class="Punctuation">:</span> <span class="Operator">^</span> <span class="Keyword">and</span> <span class="Operator">$</span> <span class="Identifier">match</span> <span class="Identifier">begin</span><span class="Operator">/</span><span class="Keyword">end</span> <span class="Keyword">of</span> <span class="Identifier">line</span>
|
|
<span class="Identifier">s</span> <span class="Identifier">allow</span> <span class="Operator">.</span> <span class="Identifier">to</span> <span class="Identifier">match</span> <span class="Operator">\</span><span class="Identifier">L</span> <span class="Punctuation">(</span><span class="Identifier">new</span> <span class="Identifier">line</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">U</span> <span class="Identifier">swap</span> <span class="Identifier">the</span> <span class="Identifier">meaning</span> <span class="Keyword">of</span> <span class="Identifier">x</span><span class="Operator">*</span> <span class="Keyword">and</span> <span class="Identifier">x</span><span class="Operator">*?</span> <span class="Punctuation">(</span><span class="Identifier">un</span><span class="Operator">-</span><span class="Identifier">greedy</span> <span class="Identifier">mode</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">u</span> <span class="Identifier">Unicode</span> <span class="Identifier">support</span> <span class="Punctuation">(</span><span class="Identifier">enabled</span> <span class="Identifier">by</span> <span class="Identifier">default</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">x</span> <span class="Identifier">ignore</span> <span class="Identifier">whitespace</span> <span class="Keyword">and</span> <span class="Identifier">allow</span> <span class="Identifier">line</span> <span class="Identifier">comments</span> <span class="Punctuation">(</span><span class="Identifier">starting</span> <span class="Identifier">with</span> <span class="Punctuation">`</span><span class="Comment">#`)</span></pre><p><tt class="docutils literal"><span class="pre">All flags are disabled by default unless stated otherwise</span></tt></p>
|
|
|
|
<h2><a class="toc-backref" id="syntax-escape-sequences" href="#syntax-escape-sequences">Escape sequences</a></h2><pre class="listing"><span class="Operator">\*</span> <span class="Identifier">literal</span> <span class="Operator">*</span><span class="Punctuation">,</span> <span class="Identifier">works</span> <span class="Keyword">for</span> <span class="Identifier">any</span> <span class="Identifier">punctuation</span> <span class="Identifier">character</span><span class="Punctuation">:</span> <span class="Operator">\.+*?</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Operator">|</span><span class="Punctuation">[</span><span class="Punctuation">]</span><span class="Punctuation">{</span><span class="Punctuation">}</span><span class="Operator">^$</span>
|
|
<span class="Operator">\</span><span class="Identifier">a</span> <span class="Identifier">bell</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x07</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">f</span> <span class="Identifier">form</span> <span class="Identifier">feed</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0C</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">t</span> <span class="Identifier">horizontal</span> <span class="Identifier">tab</span>
|
|
<span class="Operator">\</span><span class="Identifier">n</span> <span class="Identifier">new</span> <span class="Identifier">line</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">L</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">r</span> <span class="Identifier">carriage</span> <span class="Keyword">return</span>
|
|
<span class="Operator">\</span><span class="Identifier">v</span> <span class="Identifier">vertical</span> <span class="Identifier">tab</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">x0B</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="DecNumber">123</span> <span class="Identifier">octal</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">up</span> <span class="Identifier">to</span> <span class="Identifier">three</span> <span class="Identifier">digits</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">x7F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">two</span> <span class="Identifier">digits</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">x</span><span class="Punctuation">{</span><span class="DecNumber">10</span><span class="Identifier">FFFF</span><span class="Punctuation">}</span> <span class="Identifier">any</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Identifier">corresponding</span> <span class="Identifier">to</span> <span class="Identifier">a</span> <span class="Identifier">Unicode</span> <span class="Identifier">code</span> <span class="Identifier">point</span>
|
|
<span class="Operator">\</span><span class="Identifier">u007F</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">four</span> <span class="Identifier">digits</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">U0010FFFF</span> <span class="Identifier">hex</span> <span class="Identifier">character</span> <span class="Identifier">code</span> <span class="Punctuation">(</span><span class="Identifier">exactly</span> <span class="Identifier">eight</span> <span class="Identifier">digits</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-perl-character-classes-unicode-friendly" href="#syntax-perl-character-classes-unicode-friendly">Perl character classes (Unicode friendly)</a></h2><p>These classes are based on the definitions provided in <a class="reference external" href="http://www.unicode.org/reports/tr18/#Compatibility_Properties">UTS#18</a></p>
|
|
<pre class="listing"><span class="Operator">\</span><span class="Identifier">d</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Nd</span><span class="Punctuation">}</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">D</span> <span class="Keyword">not</span> <span class="Identifier">digit</span>
|
|
<span class="Operator">\</span><span class="Identifier">s</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">White_Space</span><span class="Punctuation">}</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">S</span> <span class="Keyword">not</span> <span class="Identifier">whitespace</span>
|
|
<span class="Operator">\</span><span class="Identifier">w</span> <span class="Identifier">word</span> <span class="Identifier">character</span> <span class="Punctuation">(</span><span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Alphabetic</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">M</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">d</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Pc</span><span class="Punctuation">}</span> <span class="Operator">+</span> <span class="Operator">\</span><span class="Identifier">p</span><span class="Punctuation">{</span><span class="Identifier">Join_Control</span><span class="Punctuation">}</span><span class="Punctuation">)</span>
|
|
<span class="Operator">\</span><span class="Identifier">W</span> <span class="Keyword">not</span> <span class="Identifier">word</span> <span class="Identifier">character</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-ascii-character-classes" href="#syntax-ascii-character-classes">ASCII character classes</a></h2><pre class="listing"><span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alnum</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphanumeric</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">alpha</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">alphabetic</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">ascii</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">ASCII</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">blank</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">blank</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span> <span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">cntrl</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">control</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">x00</span><span class="Operator">-\</span><span class="Identifier">x1F</span><span class="Operator">\</span><span class="Identifier">x7F</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">digit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">digits</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">graph</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">graphical</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">lower</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">lower</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">a</span><span class="Operator">-</span><span class="Identifier">z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">print</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">printable</span> <span class="Punctuation">(</span><span class="Punctuation">[</span> <span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">punct</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">punctuation</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">!-/:-@\</span><span class="Punctuation">[</span><span class="Operator">-</span><span class="Punctuation">`</span><span class="Punctuation">{</span><span class="Operator">-~</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">space</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">whitespace</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">\</span><span class="Identifier">t</span><span class="Operator">\</span><span class="Identifier">n</span><span class="Operator">\</span><span class="Identifier">v</span><span class="Operator">\</span><span class="Identifier">f</span><span class="Operator">\</span><span class="Identifier">r</span> <span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">upper</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">upper</span> <span class="Keyword">case</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Z</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">word</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">word</span> <span class="Identifier">characters</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Za</span><span class="Operator">-</span><span class="Identifier">z_</span><span class="Punctuation">]</span><span class="Punctuation">)</span>
|
|
<span class="Punctuation">[</span><span class="Punctuation">[</span><span class="Punctuation">:</span><span class="Identifier">xdigit</span><span class="Punctuation">:</span><span class="Punctuation">]</span><span class="Punctuation">]</span> <span class="Identifier">hex</span> <span class="Identifier">digit</span> <span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Operator">-</span><span class="DecNumber">9</span><span class="Identifier">A</span><span class="Operator">-</span><span class="Identifier">Fa</span><span class="Operator">-</span><span class="Identifier">f</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="syntax-lookaround-assertions" href="#syntax-lookaround-assertions">Lookaround Assertions</a></h2><pre class="listing"><span class="Punctuation">(</span><span class="Operator">?=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookahead</span> <span class="Identifier">assertion</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?<=</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">positive</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span>
|
|
<span class="Punctuation">(</span><span class="Operator">?<!</span><span class="Identifier">regex</span><span class="Punctuation">)</span> <span class="Identifier">A</span> <span class="Identifier">negative</span> <span class="Identifier">lookbehind</span> <span class="Identifier">assertion</span></pre><p>Any regex expression is a valid lookaround; groups are captured as well. Beware, lookarounds containing repetitions (<tt class="docutils literal"><span class="pre">*</span></tt>, <tt class="docutils literal"><span class="pre">+</span></tt>, and <tt class="docutils literal"><span class="pre">{n,}</span></tt>) may run in polynomial time.</p>
|
|
|
|
<h1><a class="toc-backref" id="examples" href="#examples">Examples</a></h1>
|
|
<h2><a class="toc-backref" id="examples-multiple-captures" href="#examples-multiple-captures">Multiple captures</a></h2><p>Unlike most regex engines, this library supports capturing all repetitions. Most other libraries return only the last capture. The caveat is even non-repeated groups or characters are returned as a list of captures instead of a single capture.</p>
|
|
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"nim c --styleCheck:hint --colors:off regex.nim"</span>
|
|
<span class="Keyword">var</span> <span class="Identifier">m</span><span class="Punctuation">:</span> <span class="Identifier">RegexMatch</span>
|
|
<span class="Keyword">if</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re"nim c (?:--(\w+:\w+) *)+ (\w+).nim"</span><span class="Punctuation">,</span> <span class="Identifier">m</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="Identifier">text</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"styleCheck:hint"</span><span class="Punctuation">,</span> <span class="StringLit">"colors:off"</span><span class="Punctuation">]</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="Identifier">text</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"regex"</span><span class="Punctuation">]</span>
|
|
<span class="Keyword">else</span><span class="Punctuation">:</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">false</span><span class="Punctuation">,</span> <span class="StringLit">"no match"</span></pre>
|
|
<h2><a class="toc-backref" id="examples-verbose-mode" href="#examples-verbose-mode">Verbose Mode</a></h2><p>Verbose mode <tt class="docutils literal"><span class="pre">(?x)</span></tt> makes regexes more readable by allowing comments and multi-lines within the regular expression itself. The caveat is spaces and pound signs must be scaped to be matched.</p>
|
|
<pre class="listing"><span class="Keyword">const</span> <span class="Identifier">exp</span> <span class="Operator">=</span> <span class="LongStringLit">re"""(?x)
|
|
\# # the hashtag
|
|
\w+ # hashtag words
|
|
"""</span>
|
|
<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"#NimLang"</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">match</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="Identifier">exp</span><span class="Punctuation">)</span></pre>
|
|
<h2><a class="toc-backref" id="examples-find-all" href="#examples-find-all">Find All</a></h2><p>The <tt class="docutils literal"><span class="pre">findAll</span></tt> function will find all boundaries and captures that match the regular expression.</p>
|
|
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="LongStringLit">"""
|
|
The Continental's email list:
|
|
john_wick@continental.com
|
|
winston@continental.com
|
|
ms_perkins@continental.com
|
|
"""</span>
|
|
<span class="Keyword">var</span> <span class="Identifier">matches</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span>
|
|
<span class="Keyword">var</span> <span class="Identifier">captures</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span>
|
|
<span class="Keyword">for</span> <span class="Identifier">m</span> <span class="Keyword">in</span> <span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">re"(\w+)@\w+\.\w+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
|
|
<span class="Identifier">matches</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span>
|
|
<span class="Identifier">captures</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="Identifier">text</span><span class="Punctuation">)</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span>
|
|
<span class="StringLit">"john_wick@continental.com"</span><span class="Punctuation">,</span>
|
|
<span class="StringLit">"winston@continental.com"</span><span class="Punctuation">,</span>
|
|
<span class="StringLit">"ms_perkins@continental.com"</span>
|
|
<span class="Punctuation">]</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">captures</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"john_wick"</span><span class="Punctuation">,</span> <span class="StringLit">"winston"</span><span class="Punctuation">,</span> <span class="StringLit">"ms_perkins"</span><span class="Punctuation">]</span></pre>
|
|
<h2><a class="toc-backref" id="examples-match-macro" href="#examples-match-macro">Match Macro</a></h2><p>The <tt class="docutils literal"><span class="pre">match</span></tt> macro is sometimes more convenient, and faster than the function version. It will run a full match on the whole string, similar to <tt class="docutils literal"><span class="pre">^regex$</span></tt>.</p>
|
|
<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group.</p>
|
|
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">false</span>
|
|
<span class="Keyword">let</span> <span class="Identifier">text</span> <span class="Operator">=</span> <span class="StringLit">"[my link](https://example.com)"</span>
|
|
<span class="Identifier">match</span> <span class="Identifier">text</span><span class="Punctuation">,</span> <span class="RawData">rex"\[([^\]]+)\]\((https?://[^)]+)\)"</span><span class="Punctuation">:</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">matches</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"my link"</span><span class="Punctuation">,</span> <span class="StringLit">"https://example.com"</span><span class="Punctuation">]</span>
|
|
<span class="Identifier">matched</span> <span class="Operator">=</span> <span class="Identifier">true</span>
|
|
<span class="Identifier">doAssert</span> <span class="Identifier">matched</span></pre></p>
|
|
<div class="section" id="6">
|
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
|
<dl class="item">
|
|
<a class="reference external" href="regex/types.html">regex/types</a>, <a class="reference external" href="regex/common.html">regex/common</a>, <a class="reference external" href="regex/compiler.html">regex/compiler</a>, <a class="reference external" href="regex/nfatype.html">regex/nfatype</a>, <a class="reference external" href="regex/nfafindall.html">regex/nfafindall</a>, <a class="reference external" href="regex/nfamatch.html">regex/nfamatch</a>, <a class="reference external" href="regex/litopt.html">regex/litopt</a>, <a class="reference external" href="regex/nfamacro.html">regex/nfamacro</a>, <a class="reference external" href="regex/parser.html">regex/parser</a>, <a class="reference external" href="regex/exptransformation.html">regex/exptransformation</a>, <a class="reference external" href="regex/dotgraph.html">regex/dotgraph</a>
|
|
</dl></div>
|
|
<div class="section" id="12">
|
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
|
<dl class="item">
|
|
<a id="re,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
Parse and compile a regular expression at run-time
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">abcx</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="RawData">re"abc\w"</span><span class="Whitespace">
|
|
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">abcx2</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">re</span><span class="Punctuation">(</span><span class="RawData">r"abc\w"</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">pat</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="RawData">r"abc\w"</span><span class="Whitespace">
|
|
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">abcx3</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">re</span><span class="Punctuation">(</span><span class="Identifier">pat</span><span class="Punctuation">)</span></pre>
|
|
|
|
</dd>
|
|
<a id="re,staticstring"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#re%2Cstaticstring"><span class="Identifier">re</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
Parse and compile a regular expression at compile-time
|
|
|
|
</dd>
|
|
<a id="toPattern,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#toPattern%2Cstring"><span class="Identifier">toPattern</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">"Use `re` instead"</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
<div class="deprecation-message">
|
|
<b>Deprecated:</b> Use `re` instead
|
|
</div>
|
|
|
|
|
|
|
|
</dd>
|
|
<a id="rex,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#rex%2Cstring"><span class="Identifier">rex</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
Raw regex literal string
|
|
|
|
</dd>
|
|
<a id="group,RegexMatch,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return slices for a given group. Use the iterator version if you care about performance
|
|
|
|
</dd>
|
|
<a id="group,RegexMatch,int,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return seq of captured text by group number <tt class="docutils literal"><span class="pre">i</span></tt>
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(hello) (?:([^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"hello"</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"beautiful"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"world"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupFirstCapture,RegexMatch,int,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return first capture for a given capturing group
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(hello) (?:([^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupFirstCapture</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"hello"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupFirstCapture</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"beautiful"</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupLastCapture,RegexMatch,int,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cint%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return last capture for a given capturing group
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(hello) (?:([^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupLastCapture</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"hello"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupLastCapture</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"world"</span></pre>
|
|
|
|
</dd>
|
|
<a id="group,RegexMatch,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return slices for a given named group. Use the iterator version if you care about performance
|
|
|
|
</dd>
|
|
<a id="group,RegexMatch,string,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#group%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return seq of captured text by group <tt class="docutils literal"><span class="pre">groupName</span></tt>
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(?P<greet>hello) (?:(?P<who>[^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"hello"</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="StringLit">"who"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"beautiful"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"world"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupFirstCapture,RegexMatch,string,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupFirstCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupFirstCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return first capture for a given capturing group
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(?P<greet>hello) (?:(?P<who>[^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupFirstCapture</span><span class="Punctuation">(</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"hello"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupFirstCapture</span><span class="Punctuation">(</span><span class="StringLit">"who"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"beautiful"</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupLastCapture,RegexMatch,string,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupLastCapture%2CRegexMatch%2Cstring%2Cstring"><span class="Identifier">groupLastCapture</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">groupName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return last capture for a given capturing group
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello beautiful world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(?P<greet>hello) (?:(?P<who>[^\s]+)\s?)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupLastCapture</span><span class="Punctuation">(</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"hello"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupLastCapture</span><span class="Punctuation">(</span><span class="StringLit">"who"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"world"</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupsCount,RegexMatch"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupsCount%2CRegexMatch"><span class="Identifier">groupsCount</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return the number of capturing groups
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"ab"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(a)(b)"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupsCount</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span></pre>
|
|
|
|
</dd>
|
|
<a id="groupNames,RegexMatch"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#groupNames%2CRegexMatch"><span class="Identifier">groupNames</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return the names of capturing groups.
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"hello world"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(?P<greet>hello) (?P<who>world)"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">groupNames</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"greet"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"who"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="match,string,Regex,RegexMatch,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return a match if the whole string matches the regular expression. This is similar to <tt class="docutils literal"><span class="pre">find(text, re"^regex$", m)</span></tt> but has better performance
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"abcd"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"abc"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span></pre>
|
|
|
|
</dd>
|
|
<a id="match,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#match%2Cstring%2CRegex"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
<a id="findAll,string,Regex,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#findAll%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
<a id="findAllBounds,string,Regex,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#findAllBounds%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
<a id="findAndCaptureAll,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#findAndCaptureAll%2Cstring%2CRegex"><span class="Identifier">findAndCaptureAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
search through the string and return a seq with captures.
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">findAndCaptureAll</span><span class="Punctuation">(</span><span class="StringLit">"a1b2c3d4e5"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"\d"</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace">
|
|
</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"1"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"2"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"3"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"4"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"5"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="contains,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cstring%2CRegex"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
search for the pattern anywhere in the string
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="RawData">re"bc"</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="StringLit">"abcd"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="RawData">re"(23)+"</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="StringLit">"23232"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="RawData">re"^(23)+$"</span><span class="Whitespace"> </span><span class="Keyword">notin</span><span class="Whitespace"> </span><span class="StringLit">"23232"</span></pre>
|
|
|
|
</dd>
|
|
<a id="find,string,Regex,RegexMatch,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#find%2Cstring%2CRegex%2CRegexMatch%2Cint"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">m</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
search through the string looking for the first location where there is a match
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re"bc"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Keyword">and</span><span class="Whitespace">
|
|
</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="StringLit">"abcd"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re"de"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"2222"</span><span class="Operator">.</span><span class="Identifier">find</span><span class="Punctuation">(</span><span class="RawData">re"(22)*"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Keyword">and</span><span class="Whitespace">
|
|
</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="split,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#split%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return not matched substrings
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"\d+"</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace">
|
|
</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"弢"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">""</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="splitIncl,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#splitIncl%2Cstring%2CRegex"><span class="Identifier">splitIncl</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return not matched substrings, including captured groups
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
|
|
</span><span class="Identifier">parts</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">splitIncl</span><span class="Punctuation">(</span><span class="StringLit">"a,b"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"(,)"</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">expected</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">","</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"b"</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">parts</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Identifier">expected</span></pre>
|
|
|
|
</dd>
|
|
<a id="startsWith,string,Regex,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#startsWith%2Cstring%2CRegex%2Cint"><span class="Identifier">startsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return whether the string starts with the pattern or not
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re"\w"</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">startsWith</span><span class="Punctuation">(</span><span class="RawData">re"\d"</span><span class="Punctuation">)</span></pre>
|
|
|
|
</dd>
|
|
<a id="endsWith,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#endsWith%2Cstring%2CRegex"><span class="Identifier">endsWith</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return whether the string ends with the pattern or not
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re"\w"</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">endsWith</span><span class="Punctuation">(</span><span class="RawData">re"\d"</span><span class="Punctuation">)</span></pre>
|
|
|
|
</dd>
|
|
<a id="replace,string,Regex,string,int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cstring%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">by</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
<p>Replace matched substrings.</p>
|
|
<p>Matched groups can be accessed with <tt class="docutils literal"><span class="pre">$N</span></tt> notation, where <tt class="docutils literal"><span class="pre">N</span></tt> is the group's index, starting at 1 (1-indexed). <tt class="docutils literal"><span class="pre">$$</span></tt> means literal <tt class="docutils literal"><span class="pre">$</span></tt>.</p>
|
|
<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p>
|
|
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"aaa"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"b"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="StringLit">"baa"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re"(a(b)c)"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"m($1) m($2)"</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace">
|
|
</span><span class="StringLit">"m(abc) m(b)"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="StringLit">"Nim is awesome!"</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re"(\w\B)"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"$1_"</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace">
|
|
</span><span class="StringLit">"N_i_m i_s a_w_e_s_o_m_e!"</span></pre>
|
|
|
|
</dd>
|
|
<a id="replace,string,Regex,proc(RegexMatch,string),int"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#replace%2Cstring%2CRegex%2Cproc%28RegexMatch%2Cstring%29%2Cint"><span class="Identifier">replace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span>
|
|
<span class="Identifier">by</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">limit</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
<p>Replace matched substrings.</p>
|
|
<p>If <tt class="docutils literal"><span class="pre">limit</span></tt> is given, at most <tt class="docutils literal"><span class="pre">limit</span></tt> replacements are done. <tt class="docutils literal"><span class="pre">limit</span></tt> of 0 means there is no limit</p>
|
|
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">proc</span><span class="Whitespace"> </span><span class="Identifier">removeEvenWords</span><span class="Punctuation">(</span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">string</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">string</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace">
|
|
</span><span class="Identifier">result</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">""</span><span class="Whitespace">
|
|
</span><span class="Keyword">if</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Whitespace"> </span><span class="Keyword">mod</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Operator">!=</span><span class="Whitespace"> </span><span class="DecNumber">0</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">result</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
|
|
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"Es macht Spaß, alle geraden Wörter zu entfernen!"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">replace</span><span class="Punctuation">(</span><span class="RawData">re"((\w)+\s*)"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">removeEvenWords</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace">
|
|
</span><span class="StringLit">"macht , geraden entfernen!"</span></pre>
|
|
|
|
</dd>
|
|
<a id="isInitialized,Regex"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#isInitialized%2CRegex"><span class="Identifier">isInitialized</span></a><span class="Other">(</span><span class="Identifier">re</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
Check whether the regex has been initialized
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">re</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">Regex</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span><span class="Whitespace">
|
|
</span><span class="Identifier">re</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="RawData">re"foo"</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">re</span><span class="Operator">.</span><span class="Identifier">isInitialized</span></pre>
|
|
|
|
</dd>
|
|
<a id="escapeRe,string"></a>
|
|
<dt><pre><span class="Keyword">func</span> <a href="#escapeRe%2Cstring"><span class="Identifier">escapeRe</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
Escape special regex characters in <tt class="docutils literal"><span class="pre">s</span></tt> so that it can be matched verbatim
|
|
|
|
</dd>
|
|
|
|
</dl></div>
|
|
<div class="section" id="15">
|
|
<h1><a class="toc-backref" href="#15">Iterators</a></h1>
|
|
<dl class="item">
|
|
<a id="group.i,RegexMatch,int"></a>
|
|
<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cint"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return slices for a given group. Slices of start > end are empty matches (i.e.: <tt class="docutils literal"><span class="pre">re"(\d?)"</span></tt>) and they are included same as in PCRE.
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(\w)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">captures</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">for</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">captures</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">bounds</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">captures</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"b"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"c"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="group.i,RegexMatch,string"></a>
|
|
<dt><pre><span class="Keyword">iterator</span> <a href="#group.i%2CRegexMatch%2Cstring"><span class="Identifier">group</span></a><span class="Other">(</span><span class="Identifier">m</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return slices for a given named group
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">RegexMatch</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Operator">.</span><span class="Identifier">match</span><span class="Punctuation">(</span><span class="RawData">re"(?P<foo>\w)+"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">captures</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">for</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">group</span><span class="Punctuation">(</span><span class="StringLit">"foo"</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">captures</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">bounds</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">captures</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"b"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"c"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="findAll.i,string,Regex,int"></a>
|
|
<dt><pre><span class="Keyword">iterator</span> <a href="#findAll.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAll</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span>
|
|
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
search through the string and return each match. Empty matches (start > end) are included
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"abcabc"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">found</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">for</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">findAll</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Whitespace">
|
|
</span><span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Punctuation">[</span><span class="Identifier">m</span><span class="Operator">.</span><span class="Identifier">boundaries</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">]</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">found</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"bc"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"bc"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="findAllBounds.i,string,Regex,int"></a>
|
|
<dt><pre><span class="Keyword">iterator</span> <a href="#findAllBounds.i%2Cstring%2CRegex%2Cint"><span class="Identifier">findAllBounds</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">pattern</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">;</span> <span class="Identifier">start</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Slice</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
search through the string and return each match. Empty matches (start > end) are included
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">text</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">"abcabc"</span><span class="Whitespace">
|
|
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">Slice</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">for</span><span class="Whitespace"> </span><span class="Identifier">bd</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">findAllBounds</span><span class="Punctuation">(</span><span class="Identifier">text</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"bc"</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">bounds</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">bd</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">bounds</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Operator">..</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
<a id="split.i,string,Regex"></a>
|
|
<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRegex"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
|
<dd>
|
|
|
|
return not matched substrings
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">found</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Whitespace">
|
|
</span><span class="Keyword">for</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">"11a22Ϊ33Ⓐ44弢55"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">re"\d+"</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">found</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">found</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">""</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"a"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"Ϊ"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"Ⓐ"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"弢"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">""</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
|
|
</dl></div>
|
|
<div class="section" id="17">
|
|
<h1><a class="toc-backref" href="#17">Macros</a></h1>
|
|
<dl class="item">
|
|
<a id="match.m,string,RegexLit,untyped"></a>
|
|
<dt><pre><span class="Keyword">macro</span> <a href="#match.m%2Cstring%2CRegexLit%2Cuntyped"><span class="Identifier">match</span></a><span class="Other">(</span><span class="Identifier">text</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">regex</span><span class="Other">:</span> <a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
|
|
<dd>
|
|
|
|
<p>return a match if the whole string matches the regular expression. This is similar to the <tt class="docutils literal"><span class="pre">match</span></tt> function, but faster. Notice it requires a raw regex <em>literal</em> string as second parameter; the regex must be known at compile time, and cannot be a var/let/const</p>
|
|
<p>A <tt class="docutils literal"><span class="pre">matches: seq[string]</span></tt> variable is injected into the scope, and it contains the submatches for every capture group. If a group is repeated (ex: <tt class="docutils literal"><span class="pre">(\w)+</span></tt>), it will contain the last capture for that group.</p>
|
|
<p>Note: Only available in Nim +1.1</p>
|
|
|
|
<p><strong class="examples_text">Example:</strong></p>
|
|
<pre class="listing"><span class="Identifier">match</span><span class="Whitespace"> </span><span class="StringLit">"abc"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="RawData">rex"(a(b)c)"</span><span class="Punctuation">:</span><span class="Whitespace">
|
|
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">matches</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">"abc"</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"b"</span><span class="Punctuation">]</span></pre>
|
|
|
|
</dd>
|
|
|
|
</dl></div>
|
|
<div class="section" id="19">
|
|
<h1><a class="toc-backref" href="#19">Exports</a></h1>
|
|
<dl class="item">
|
|
<a href="regex/nfatype.html#RegexLit"><span class="Identifier">RegexLit</span></a>, <a href="regex/nfatype.html#Regex"><span class="Identifier">Regex</span></a>, <a href="regex/nfatype.html#RegexMatch"><span class="Identifier">RegexMatch</span></a>, <a href="regex/common.html#RegexError"><span class="Identifier">RegexError</span></a>
|
|
</dl></div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="twelve-columns footer">
|
|
<span class="nim-sprite"></span>
|
|
<br/>
|
|
<small style="color: var(--hint);">Made with Nim. Generated: 2021-01-06 13:01:33 UTC</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|