# preg 库模块帮助文档

[preg 正则表达式扩展库使用指南](https://www.aardio.com/zh-cn/docs/library-guide/ext/preg/_.html)

## 全局对象 成员列表 <a id="global" href="#global">&#x23;</a>

### preg <a id="preg" href="#preg">&#x23;</a>
Perl兼容正则表达式支持库

### preg("\w+","uis") <a id="preg("\w+","uis")" href="#preg("\w+","uis")">&#x23;</a>
创建正则表达式对象,参数一指定正则,  
参数2指定修正符:   
    "i" 忽略大小写,  
    "u" 是否启用UTF8文本匹配并按字符计数 - 使正则表达式可支持中文,  
    "s"表示圆点可以匹配换行  

也可以在参数一中同时指定正则与修正符，例如"/正则/修正符",  
正则语法错误创建对象失败时返回:null,错误信息,错误代码,错误位置

### preg() <a id="preg()" href="#preg()">&#x23;</a>
[返回对象:pRegexObject](#pRegexObject)

## pRegexObject 成员列表 <a id="pRegexObject" href="#pRegexObject">&#x23;</a>

### pRegexObject.exec(匹配字符串,起始位置,选项) <a id="pRegexObject.exec" href="#pRegexObject.exec">&#x23;</a>
匹配字符串,失败返回null空值,  
成功返回值1为字符串数组,第一个元素为匹配结果,后面是其他捕获分组  
返回值2返回对应的匹配位置数组,  
起始位置默认按字节计数,UTF8文本匹配时按字符计数

### pRegexObject.find(匹配字符串,起始位置,选项) <a id="pRegexObject.find" href="#pRegexObject.find">&#x23;</a>
返回匹配字符串起始位置，结束位置,  
匹配失败返回空,  
起始位置默认按字节计数,UTF8文本匹配时按字符计数,  
参数2,3为可选参数

### pRegexObject.free() <a id="pRegexObject.free" href="#pRegexObject.free">&#x23;</a>
释放正则对象,正则对象将释放不能再使用,  
对象自动回收时将会自动调用该函数,因此并非必须调用此函数

### pRegexObject.gmatch <a id="pRegexObject.gmatch" href="#pRegexObject.gmatch">&#x23;</a>

```aardio
for m,m2,m3 in pRegexObject.gmatch( /*参数(匹配字符串,起始位置,选项)  
参数2,3可选*/) {   

}
```

### pRegexObject.grep(匹配数组,选项) <a id="pRegexObject.grep" href="#pRegexObject.grep">&#x23;</a>
返回数组的值匹配正则的新数组,  
参数2可选

### pRegexObject.match(匹配字符串,起始位置,选项) <a id="pRegexObject.match" href="#pRegexObject.match">&#x23;</a>
匹配字符串并使用多个返回值返回所有捕获分组,  
如果无分组则返回匹配字符串

### pRegexObject.namedStringNumber("捕获组名字") <a id="pRegexObject.namedStringNumber" href="#pRegexObject.namedStringNumber">&#x23;</a>
返回命名捕获组在匹配分组中的索引

### pRegexObject.replace(匹配字符串,替换字符串,起始位置,替换次数,选项) <a id="pRegexObject.replace" href="#pRegexObject.replace">&#x23;</a>
除参数1,2以外其他参数可选,  
替换次数默认为-1,即不限替换次数,  
参数2也可以是回调函数对象,或者替换表对象,用法同string.replace,  
起始位置默认按字节计数,UTF8文本匹配时按字符计数

### pRegexObject.split(拆分字符串,起始位置,选项) <a id="pRegexObject.split" href="#pRegexObject.split">&#x23;</a>
使用正则表达式指定分隔符拆分字符串并返回数组,  
起始位置默认按字节计数,UTF8文本匹配时按字符计数,  
参数2,3为可选参数

### pRegexObject.test(匹配字符串,起始位置,选项) <a id="pRegexObject.test" href="#pRegexObject.test">&#x23;</a>
测试正则是否匹配，返回布尔值,  
起始位置默认按字节计数,UTF8文本匹配时按字符计数,  
参数2,3为可选参数

### pRegexObject.utf8 <a id="pRegexObject.utf8" href="#pRegexObject.utf8">&#x23;</a>
是否启用UTF8文本匹配并按字符计数,  
如果在正则修正符中指定了"u",在该属性自动设置为true

### 自动完成常量
_PCRE_ANCHORED=0x10  
_PCRE_AUTO_CALLOUT=0x4000  
_PCRE_BSR_ANYCRLF=0x800000  
_PCRE_BSR_UNICODE=0x1000000  
_PCRE_CASELESS=1  
_PCRE_CONFIG_BSR=8  
_PCRE_CONFIG_LINK_SIZE=2  
_PCRE_CONFIG_MATCH_LIMIT=4  
_PCRE_CONFIG_MATCH_LIMIT_RECURSION=7  
_PCRE_CONFIG_NEWLINE=1  
_PCRE_CONFIG_POSIX_MALLOC_THRESHOLD=3  
_PCRE_CONFIG_STACKRECURSE=5  
_PCRE_CONFIG_UNICODE_PROPERTIES=6  
_PCRE_CONFIG_UTF8=0  
_PCRE_DFA_RESTART=0x20000  
_PCRE_DFA_SHORTEST=0x10000  
_PCRE_DOLLAR_ENDONLY=0x20  
_PCRE_DOTALL=4  
_PCRE_DUPNAMES=0x80000  
_PCRE_ERROR_BADCOUNT=-15  
_PCRE_ERROR_BADMAGIC=-4  
_PCRE_ERROR_BADNEWLINE=-23  
_PCRE_ERROR_BADOPTION=-3  
_PCRE_ERROR_BADPARTIAL=-13  
_PCRE_ERROR_BADUTF8=-10  
_PCRE_ERROR_BADUTF8_OFFSET=-11  
_PCRE_ERROR_CALLOUT=-9  
_PCRE_ERROR_DFA_RECURSE=-20  
_PCRE_ERROR_DFA_UCOND=-17  
_PCRE_ERROR_DFA_UITEM=-16  
_PCRE_ERROR_DFA_UMLIMIT=-18  
_PCRE_ERROR_DFA_WSSIZE=-19  
_PCRE_ERROR_INTERNAL=-14  
_PCRE_ERROR_MATCHLIMIT=-8  
_PCRE_ERROR_NOMATCH=-1  
_PCRE_ERROR_NOMEMORY=-6  
_PCRE_ERROR_NOSUBSTRING=-7  
_PCRE_ERROR_NULL=-2  
_PCRE_ERROR_NULLWSLIMIT=-22  
_PCRE_ERROR_PARTIAL=-12  
_PCRE_ERROR_RECURSIONLIMIT=-21  
_PCRE_ERROR_UNKNOWN_NODE=-5  
_PCRE_ERROR_UNKNOWN_OPCODE=-5  
_PCRE_EXTENDED=8  
_PCRE_EXTRA=0x40  
_PCRE_EXTRA_CALLOUT_DATA=4  
_PCRE_EXTRA_MATCH_LIMIT=2  
_PCRE_EXTRA_MATCH_LIMIT_RECURSION=0x10  
_PCRE_EXTRA_STUDY_DATA=1  
_PCRE_EXTRA_TABLES=8  
_PCRE_FIRSTLINE=0x40000  
_PCRE_INFO_BACKREFMAX=3  
_PCRE_INFO_CAPTURECOUNT=2  
_PCRE_INFO_DEFAULT_TABLES=0xB  
_PCRE_INFO_FIRSTBYTE=4  
_PCRE_INFO_FIRSTCHAR=4  
_PCRE_INFO_FIRSTTABLE=5  
_PCRE_INFO_HASCRORLF=0xE  
_PCRE_INFO_JCHANGED=0xD  
_PCRE_INFO_LASTLITERAL=6  
_PCRE_INFO_NAMECOUNT=8  
_PCRE_INFO_NAMEENTRYSIZE=7  
_PCRE_INFO_NAMETABLE=9  
_PCRE_INFO_OKPARTIAL=0xC  
_PCRE_INFO_OPTIONS=0  
_PCRE_INFO_SIZE=1  
_PCRE_INFO_STUDYSIZE=0xA  
_PCRE_JAVASCRIPT_COMPAT=0x2000000  
_PCRE_MULTILINE=2  
_PCRE_NEWLINE_ANY=0x400000  
_PCRE_NEWLINE_ANYCRLF=0x500000  
_PCRE_NEWLINE_CR=0x100000  
_PCRE_NEWLINE_CRLF=0x300000  
_PCRE_NEWLINE_LF=0x200000  
_PCRE_NOTBOL=0x80  
_PCRE_NOTEMPTY=0x400  
_PCRE_NOTEOL=0x100  
_PCRE_NO_AUTO_CAPTURE=0x1000  
_PCRE_NO_START_OPTIMISE=0x4000000  
_PCRE_NO_START_OPTIMIZE=0x4000000  
_PCRE_NO_UTF8_CHECK=0x2000  
_PCRE_PARTIAL=0x8000  
_PCRE_UNGREEDY=0x200  
_PCRE_UTF8=0x800  
