<p>testlkjsfdl</p>
<table xxx>
<tr>
<td align="centre" style="xxxxxx">
go home...
<p>testper
</p>
</td>
<td><p>best</p></td>
</tr>
</table>
<p align="center">
this
</p>
谢谢。
<table xxx>
<tr>
<td align="centre" style="xxxxxx">
go home...
<p>testper
</p>
</td>
<td><p>best</p></td>
</tr>
</table>
<p align="center">
this
</p>
谢谢。
解决方案 »
- a中的元素都是int类型,但从ArrayList a = new ArrayList()看不出a中的元素都是int类型的。如何实例化才能显式看出a中的元素是int类型的。
- winform 中 listview 的item 的某一列的值是不是不能更改
- treeview的使用
- 同类控件的相同事件
- 100分急问菜鸟问题!关于C#操作EXCEL
- 一个需要大量内存操作的计算,有没有什么方法能像C++里那样对虚拟内存进行管理的?
- 如何解决程序退出又打开后不能绑定端口的问题
- 界面显示问题!急!
- 请举出一个例子说明如何在Visual C#中使用控件数组?????
- 有谁知道C#和java的效率差别
- 求助:C#.net删除照片的问题
- 数据库命令
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
(?:(?!</?td\b).)* // 过客兄 这里的 . 是什么作用阿 还有 这里的表达式表示什么意思, 谢谢
s 单行模式
等效于
MatchCollection mc = Regex.Matches(yourStr, @"(?<!<td[^>]*>(?:(?!</?td\b).)*)<p[^>]*>(?:(?!</p>).)*</p>(?!(?:(?!</?td\b).)*</td>)",RegexOptions.IgnoreCase|RegexOptions.Singleline);
前面使用了(?s)的单行模式,所以这里的小数点“.”可以匹配任意字符(?:(?!</?td\b).)*
这种写法的作用相当于使用排除型字符组,只不过排除型字符组只能排除字符序列,而不能排除一个子串
对于楼主的需求,这种方式是符合要求的
<td...>...</td>...<p...>
而这几种方式是不符合要求的
<td...>...<p...>
<td...>...<td...>...</td>...<p...>
那么抽象一下,不是以上情况的,就符合要求,这种写法的意义也就是要求<p...>前面不能是以上格式的子串举个简单的例子,取不在“<...>”内的数字,那么正则可以写作
(?<!<[^<>]*)\d+(?![^<>]*>)
楼主的需求,只不过是由一个字符变为一个子串,那么这里就不能用排除型字符组,而要用(?:(?!</?td\b).)*这种方式来排除一个子串了