Regex reg = new Regex(@"(?is)<div(?:(?!id=).)*id=(['""]?)" + id + @"\1[^>]*>(?><div[^>]*>(?<o>)|</div>(?<-o>)|(?:(?!</?div\b).)*)* (?(o)(?!))</div>")(?is)是什么意思?
(?:(?!id=).)*id=(['""]?)含义,
最好整个表达式详细解释一下 谢谢
解决方案 »
- 关于事务的问题
- 问个不专业C#的问题,居然在网上都找不到同样的。。
- 请教:如何保存Graphic对象已绘制的内容
- 查询数据库中是否有该数据 若没有 就插入
- 收回combobox下拉框 急!
- 求助!继承自System.Web.UI.Page类中使用 session 遇到的问题
- windows server2008 环境下的 vs2008 安装 vs2008sp1 补丁后的错误
- 求救~~~~~~~~~`
- 关于汉字占字节的问题.
- realone的嵌入
- c++中定义的WideString和L类型数据在c#中如何定义
- 我的CS解决方案资源管理器为什么不会贴在编辑窗口的右边窗体内,而是一直悬浮在代码编辑窗口上方。
?s 更改.的含义,使它与每一个字符匹配(包括换行符\n)。
-------------
(?:(?!id=).)*(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?!exp) 匹配后面跟的不是exp的位置
* 重复零次或更多次
总结就是捕捉id=前面所有的字符
---------------
id=(['""]?)
? 重复零次或一次
id= 就是比配id=
(['""]?) 就是匹配id=后面的'或者"或者没有
http://deerchao.net/tutorials/regex/regex.htm
当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”。
(?:pattern)
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。
(?!pattern)
执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。
(?is)是模式修改符。意思是将后面的匹配模式修改成IGNORECASE和SINGLELINE,IGNORECASE就是忽略大小写,SINGLELINE就是规定特殊字符“.” 匹配任意的字符,包括换行符。*
零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。