检查字串是否匹配指定的正则表达式.
StringRegExp ( "字符串", "表达式" [, 标志 ] [, 偏移量 ]
] )
字符串 | 目标字符串 |
表达式 | 用于比较的正则表达式. |
标志 | [可选参数] 表示函数运行方式的值. 见下表说明. 默认 0. |
偏移量 | [可选参数] 开始匹配的字符串位置 (起始于1). 默认为 1. |
标志 | 值 |
0 | 返回 1(匹配) 或 0(不匹配) |
1 | 返回匹配的数组. |
2 | 返回完整匹配的数组 (Perl / PHP 结构). |
3 | 返回全局匹配的数组. |
4 | 返回完整匹配(Perl/ PHP 结构)和全局匹配的数组. |
返回 @Error | 意义 |
2 | 正则表达式错误. @Extended = 正则表达式中的错误偏移量. |
返回 @Error | 意义 |
0 | 有效数组. 为下一个偏移量检查 @Extended |
1 | 数组无效. 没有匹配项目. |
2 | 正则表达式错误, 数组无效. @Extended = 正则表达式的偏移量错误. |
返回 @Error | 意义 |
0 | 有效数组. |
1 | 数组无效. 没有匹配项目. |
2 | 正则表达式错误, 数组无效. @Extended = 正则表达式的偏移量错误. |
[ ... ] | 匹配设置的任何字符.例如: [aeiou] 匹配任何小写元音字母. 连续设置可以在开始和结束之间使用破折号. 例如: [a-z] 匹配任何小写字符. 设置中包含破折号 (-), 将其设置为第一个或最后一个字符. 在一组要包含一个右方括号, 使用作为它的第一个字符. 例如: [][] 将匹配任意 [ 或 ]. 注意:特殊字符在设置内不保留他们的特有含义, 除非使用 \\, \^, \-,\[ 与 \] 匹配转义字符. |
[^ ... ] | 匹配任何不在指定範圍內的任意字符. 例如: [^0-9] 匹配任何非数字. 要匹配 (^) 字符本身, 请使用 (\^). |
[:class:] | 在字符的给定类中匹配字符. 有效类是:
|
[^:class:] | 匹配 'class' 的第一个字符, 不匹配任何字符. |
( ... ) | 组. 组中的元素可按序重复处理. 例如: (ab)+ 将匹配 "ab" 或 "abab", 但不匹配
"aba". 组能保存匹配的文本, 以便由函数返回的数组后向引用, 但需取决于设定的标志值. |
(?#....) | comment (not nestable). |
(?i) | 不区分大小写. 该标志对组无效. 指定正则表达式匹配时不涉及大小写. |
(?-i) | (默认) 区分大小写. 该标志对组无效. 指定正则表达式匹配时区分大小写. |
(?: ... ) | 非捕获组. 类似正常组, 但是不记录数组的匹配字符, 被匹配的文本也不会用作后向引用. |
(?i: ... ) | 不区分大小写的非捕获组. 类似的非捕获组. 在非捕获组内执行不区分大小写的匹配. |
(?-i: ... ) | 区分大小写的非捕获组. 类似的非捕获组. 在非捕获组内执行区分大小写的匹配. |
(?J) | allow duplicate names. |
(?m) | ^ 与 $ 匹配数据内的换行符. |
(?s) | . 匹配任何包含的换行符. (默认 "." 不匹配换行) |
(?U) | 反转贪婪量词. |
(?x) | 忽略空白区域和 # 注释. |
(?-...) | unset option(s). |
. | 匹配除换行符以外的任意字符. |
| | 或句点" . ", 可以匹配 | 前的字符也可以匹配 | 之后的字符. |
\ | 转义特殊字符 (让它匹配实际字符), 或者引用一个特殊字符类型 (见下文). |
\\ | 匹配一个真实的反斜杠 (\). |
\a | 报警字符, 即 BEL 字符 (chr(7)). |
\A | 只匹配字符串的开头. |
\b | 代表单词的开头或结尾, 也即单词的分界处. 通常英文单词由空格, 标点符号或者换行分隔, 但 \b 并不匹配这些单词分隔字符中的任何一个, 它只是匹配一个位置 |
\B | 匹配不是单词开头或结束的位置. |
\c | 匹配一个控制字符, 基于下一个字符. 例如: \cM 匹配 ctrl-M. |
\d | 匹配数字字符 (0-9). |
\D | 匹配非数字字符. |
\e | 匹配一个转义字符 (chr(27)). |
\E | 结束实例修改. |
\f | 匹配一个换页符 (chr(12)). |
\G | first matching position in subject. |
\h | 任何水平空白字符. |
\H | 任何不是水平空白字符的字符. |
\n | 匹配换行符 (@LF, chr(10)). |
\K | reset start of match. |
\N | a character that is not a newline |
\Q | 引用(禁用)模式元字符, 直到 \E. |
\r | 匹配一个回车符 (@CR, chr(13)). |
\R | a newline sequence. |
\s | 匹配任何的空白字符: Chr(9) 到 Chr(13) 包括: 水平制表符, 换行, 垂直列表符, 换页, 回车以及标准空格 ( Chr(32) ). |
\S | 匹配任何的非空白符的字符. |
\t | 匹配一个制表符 (chr(9)). |
\v | 匹配任何垂直空白字符. |
\V | 匹配不是垂直白字符的任何字符. |
\w | 匹配字母: a-z, A-Z; 或数字: 0-9; 或下划线 (_); 或汉字等等 |
\W | 匹配任意不是字母, 数字, 下划线, 汉字的字符. |
\ddd | 匹配八进制字符代码 ddd, 或如果成立则向后引用. 匹配之前给出确切的组号. 例如 ([:alpha:])\1 将匹配一个连字. |
\xhh | 十六进制字符代码 hh. |
\x{hhh..} | 匹配十六进制字符代码 hhh.. |
\z | 只匹配字符串的末尾. |
\Z | 只匹配字符串的末尾, 或者换行之前. |
{x} | 重复前一个字符, 设置或组精确 x 次. |
{x,} | 重复前一个字符, 设置或组至少 x 次. |
{0,x} | 重复前一个字符, 设置或组最多 x 次. |
{x, y} | 重复前一个字符, 设置或组在 x 与 y 次之间, 包含 x, y. |
* | 重复前一个字符, 设置或组 0 或更多次. 等价于 {0,} |
+ | 重复前一个字符, 设置或组 1 或更多次. 等价于 {1,} |
? | 重复前一字符, 设置或组可能会或可能不会出现. 等价于 {0, 1} |
? (重复字符后) | 查找最少的匹配而非最多的. |
[:alnum:] | 字母和数字 |
[:alpha:] | 字母 |
[:ascii:] | 字符代码 0 - 127 |
[:blank:] | 空格或制表符 |
[:cntrl:] | 控制字符 |
[:digit:] | 十进制数字 (相同于 \d) |
[:graph:] | 打印字符, 不包括空格 |
[:lower:] | 小写字母 |
[:print:] | 打印字符, 包括空格 |
[:punct:] | 打印字符,不包括字母和数字 |
[:space:] | 空白空间 (不完全和 \s 相同, 它包括 VT: chr(11) ) |
[:upper:] | 大写字母 |
[:word:] | "单词" 字符 (相同于 \w) |
[:xdigit:] | 十六进制数 |
;
***********************************
; 以下为官方示例:
; ***********************************
;选项 1, 使用偏移量
Local $nOffset
= 1
Local $array
While 1
$array = StringRegExp('<test>a</test> <test>b</test>
<test>c</Test>',
'<(?i)test>(.*?)</(?i)test>', 1,
$nOffset)
If
@error =
0 Then
$nOffset = @extended
Else
ExitLoop
EndIf
For
$i = 0 To UBound($array) - 1
MsgBox(0, "正则表达式选项 1
测试 " & $i, $array[$i])
Next
WEnd
;选项 2, 单返回, php/preg_match() 样式
$array =
StringRegExp('<test>a</test>
<test>b</test>
<test>c</Test>',
'<(?i)test>(.*?)</(?i)test>', 2)
For $i = 0 To
UBound($array) - 1
MsgBox(0, "正则表达式选项 2
测试 " & $i, $array[$i])
Next
;选项 3, 全程返回, 旧的 AutoIt 样式
$array =
StringRegExp('<test>a</test>
<test>b</test>
<test>c</Test>',
'<(?i)test>(.*?)</(?i)test>', 3)
For $i = 0 To
UBound($array) - 1
MsgBox(0, "正则表达式选项 3
测试 " & $i, $array[$i])
Next
;选项 4, 全程返回, php/preg_match_all() 样式
$array =
StringRegExp('F1oF2oF3o', '(F.o)*?', 4)
For $i = 0 To
UBound($array) - 1
Local
$match =
$array[$i]
For
$j = 0 To UBound($match) - 1
MsgBox(0, "正则表达式选项 4
测试 " & $i & ',' & $j, $match[$j])
Next
Next
provider with jb51.net (unicode) |