我们需要做的是每碰到了左括号,就在黑板上写一个"group",每碰到一个右括号,就擦掉一个,到了最后就看看黑板上还有没有-假如有那就证实左括号比右括号多,那匹配就应该失败(为了能看得更清楚一点,我用了(?'group')的语法):
< #最外层的左括号
[^<>]* #最外层的左括号后面的不是括号的内容
(
(
(?'Open'<) #碰到了左括号,在黑板上写一个"Open"
[^<>>]* #匹配左括号后面的不是括号的内容
)
(
(?'-Open'>) #碰到了右括号,擦掉一个"Open"
[^<>]* #匹配右括号后面不是括号的内容
)
)*
(?(Open)(?!)) #在碰到最外层的右括号前面,判定黑板上还有没有没擦掉的"Open";
假如还有,则匹配失败
> #最外层的右括号
我已经描述了构造正则表达式的大量元素,还有一些我没有提到的东西。下面是未提到的元素的列表,包含语法和简单的说明。你可以在网上找到更具体的参考资料 来学习它们--当你需要用到它们的时候。假如你安装了MSDN Library,你也可以在里面找到关于.net下正则表达式具体的文档。
| a | 报警字符(打印它的效果是电脑嘀一声) | ||
| b | 通常是单词分界位置,但假如在字符类里使用代表退格 | ||
| t | 制表符,Tab | ||
| r | 回车 | ||
| v | 竖向制表符 | ||
| f | 换页符 | ||
| n | 换行符 | ||
| e | Escape | ||
| nn | ASCII代码中八进制代码为nn的字符 | ||
| xnn | ASCII代码中十六进制代码为nn的字符 | ||
| unnnn | Unicode代码中十六进制代码为nnnn的字符 | ||
| cN | ASCII控制字符。比如cC代表Ctrl C | ||
| A | 字符串开头(类似^,但不受处理多行选项的影响) | ||
| 共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 12 [13] 下一页 | |||
![]() |