Regex 以下字元的定意
Dim TextRegex As Regex = New Regex[color=Red]( "type=\x22text\x22\sname=\x22[^\x22]* ")[/color]
可否解下以下字元的 Regex 的定意 (etc... 空格 = \s " = \x22)
< = ?
> = ?
/ = ?
' = ?
; = ?
: = ?
thank you
[解决办法]
* 指定零个或更多个匹配;例如 \w* 或 (abc)*。等效于 {0,}。
+ 指定一个或多个匹配;例如 \w+ 或 (abc)+。等效于 {1,}。
? 指定零个或一个匹配;例如 \w? 或 (abc)?。等效于 {0,1}。
{n} 指定恰好 n 个匹配;例如 (pizza){2}。
{n,} 指定至少 n 个匹配;例如 (abc){2,}。
{n,m} 指定至少 n 个但不多于 m 个匹配。
*? 指定尽可能少地使用重复的第一个匹配(等效于 lazy *)。
+? 指定尽可能少地使用重复但至少使用一次(等效于 lazy +)。
?? 指定使用零次重复(如有可能)或一次重复 (lazy ?)。
{n}? 等效于 {n} (lazy {n})。
{n,}? 指定尽可能少地使用重复但至少使用 n 次 (lazy {n,})。
{n,m}? 指定介于 n 次和 m 次之间、尽可能少地使用重复 (lazy {n,m})。
( ) 捕获匹配的子字符串(或非捕获组;有关详细信息,请参见正则表达式选项中的 ExplicitCapture 选项)。使用 () 的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。
(? <name> ) 将匹配的子字符串捕获到一个组名称或编号名称中。用于 name 的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如 (? 'name ')。
(? <name1-name2> ) 平衡组定义。删除先前定义的 name2 组的定义并在 name1 组中存储先前定义的 name2 组和当前组之间的间隔。如果未定义 name2 组,则匹配将回溯。由于删除 name2 的最后一个定义会显示 name2 的先前定义,因此该构造允许将 name2 组的捕获堆栈用作计数器以跟踪嵌套构造(如括号)。在此构造中,name1 是可选的。可以使用单引号替代尖括号,例如 (? 'name1-name2 ')。
(?: ) 非捕获组。
(?imnsx-imnsx: ) 应用或禁用子表达式中指定的选项。例如,(?i-s: ) 将打开不区分大小写并禁用单行模式。有关详细信息,请参见正则表达式选项。
(?= ) 零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?! ) 零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如,\b(?!un)\w+\b 与不以 un 开头的单词匹配。
(? <= ) 零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如,(? <=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(? <! ) 零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。
(?> ) 非回溯子表达式(也称为“贪婪”子表达式)。该子表达式仅完全匹配一次,然后就不会逐段参与回溯了。(也就是说,该子表达式仅与可由该子表达式单独匹配的字符串匹配。)