跪求正则高手, 在线等

kokolijk 2012-11-21 03:37:17
正则需要匹配sl.deptlist层的column
<column>abc</column> 和
<column>def</column>
不能匹配到sl.joblist层的column


<table width="90%" height="0" border="0" align="center" cellpadding="0" cellspacing="0" class="joblist">
<sl.deptlist>
<column>abc</column>
<tr class="deptitem">
<td height="30" colspan="2"><%deptlist.name%></td>
</tr>
<sl.joblist departmentid="<%deptlist.id%>" myfix:"•" myfixa:"[" myfixb:"]">
<tr class="jobitem">
<column>
<td width="70%" height="30">
<a href="<%joblist.url%>" target="_blank" title="<%joblist.title%>"><%joblist.title%></a>
</td>
<td width="30%">
<%joblist.myfixa%> <%joblist.cityname%> <%joblist.myfixb%>
</td>
</column>
</tr>
</sl.joblist>
<column>def</column>
</sl.deptlist>
</table>

...全文
239 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlei 2012-11-21
  • 打赏
  • 举报
回复
学习一下
  • 打赏
  • 举报
回复
引用 11 楼 kokolijk 的回复:
引用 10 楼 hjywyj 的回复:C# code?1234string str = File.ReadAllText("D:\\1.txt", Encoding.Default); var ary = Regex.Matches(str, @"(?<!<sl.joblist.*?)(<column>.*?</column>)|(?<=</sl.j……
string str = File.ReadAllText("D:\\1.txt", Encoding.Default); var ary = Regex.Matches(str, @"(<sl.joblist.*?</sl.joblist>|<sl.citylist.*?</sl.citylist>|(<column>.*?</column>))").Cast<Match>().Select(t => t.Groups[2].Value).ToArray();
  • 打赏
  • 举报
回复
string str = File.ReadAllText("D:\\1.txt", Encoding.Default); var ary = Regex.Matches(str, @"(<sl.joblist.*?</sl.joblist>|(<column>.*?</column>))").Cast<Match>().Select(t => t.Groups[2].Value).ToArray(); 这样也可以,直接将sl.joblist省略去
kokolijk 2012-11-21
  • 打赏
  • 举报
回复
引用 10 楼 hjywyj 的回复:
C# code?1234string str = File.ReadAllText("D:\\1.txt", Encoding.Default); var ary = Regex.Matches(str, @"(?<!<sl.joblist.*?)(<column>.*?</column>)|(?<=</sl.joblist>.*?)(<column……
测试joblist标签通过, 但是内部标签可能不是joblist, 还有其他标签比如citylist 测试了下面不成功 <(?<!<tagname>sl.(joblist)|(citylist).*?)(<column>.*?</column>)|(?<=</\k<tagname>>.*?)(<column>.*?</column>) 帮忙看看多个怎么写
  • 打赏
  • 举报
回复

string str = File.ReadAllText("D:\\1.txt", Encoding.Default);
            var ary = Regex.Matches(str, @"(?<!<sl.joblist.*?)(<column>.*?</column>)|(?<=</sl.joblist>.*?)(<column>.*?</column>)").Cast<Match>().Select(t => t.Value).ToArray();
            
快乐乔巴 2012-11-21
  • 打赏
  • 举报
回复
//先将sl.joblist层的字符替换成空白删除
Regex re1 = new Regex("(?is)<sl.joblist.*</sl.joblist>", RegexOptions.None);
string replaceStr = re1.Replace("text");
//然后再取
Regex re2 = new Regex("(?is)<column>.*?</column>", RegexOptions.None);
MatchCollection mc = re2.Matches(replaceStr );
foreach (Match ma in mc)
{

}
三人行必有师 2012-11-21
  • 打赏
  • 举报
回复
引用 6 楼 kokolijk 的回复:
引用 4 楼 niuguangfang 的回复:引用 3 楼 zhaochanglong 的回复:引用 2 楼 niuguangfang 的回复:<column>(\w+)</column 括号打成中文的了。 你理解错楼主的意思了 楼主需要得到结果应该是 XML/HTML code?12345678910<table width="90%" height="0" ……
呵呵 那意思也就是要column之间的信息喽!楼主可以试下我刚才的!
kokolijk 2012-11-21
  • 打赏
  • 举报
回复
引用 5 楼 dabingsou 的回复:
(?=<column>).*?(?<=</column>)选择Multiline模式 条件: 1、格式固定:要取的不换行<column>abc</column> 2、不取的必换行 <column> <td width="70%" height="30"> <a href="<%joblist.url%>" target……
谢谢回复: 问题是sl.deptlist层的column有可能会换行
kokolijk 2012-11-21
  • 打赏
  • 举报
回复
引用 4 楼 niuguangfang 的回复:
引用 3 楼 zhaochanglong 的回复:引用 2 楼 niuguangfang 的回复:<column>(\w+)</column 括号打成中文的了。 你理解错楼主的意思了 楼主需要得到结果应该是 XML/HTML code?12345678910<table width="90%" height="0" border="0" align="center……
谢谢回复 在做一个模板系统 在正则匹配到<sl.deptlist>...</sl.deptlist>后需在这段html中匹配<column>...</column>, 但是不能匹配到下级<sl.joblist>...</sl.joblist>中的column
dabingsou 2012-11-21
  • 打赏
  • 举报
回复
(?=<column>).*?(?<=</column>)选择Multiline模式 条件: 1、格式固定:要取的不换行<column>abc</column> 2、不取的必换行 <column> <td width="70%" height="30"> <a href="<%joblist.url%>" target="_blank" title="<%joblist.title%>"><%joblist.title%></a> </td> <td width="30%"> <%joblist.myfixa%> <%joblist.cityname%> <%joblist.myfixb%> </td> </column>
三人行必有师 2012-11-21
  • 打赏
  • 举报
回复
引用 3 楼 zhaochanglong 的回复:
引用 2 楼 niuguangfang 的回复:<column>(\w+)</column 括号打成中文的了。 你理解错楼主的意思了 楼主需要得到结果应该是 XML/HTML code?12345678910<table width="90%" height="0" border="0" align="center" cellpadding="0" cellspa……
楼主说的话有些理解不了了。 正则需要匹配sl.deptlist层的column <column>abc</column> 和 <column>def</column> 这是一段吧 不能匹配到sl.joblist层的column 这是一段 不知道最终结果要的是哪样的。。。。
zhaochanglong 2012-11-21
  • 打赏
  • 举报
回复
引用 2 楼 niuguangfang 的回复:
<column>(\w+)</column 括号打成中文的了。
你理解错楼主的意思了 楼主需要得到结果应该是

<table width="90%" height="0" border="0" align="center" cellpadding="0" cellspacing="0" class="joblist">
<sl.deptlist>
  <column>abc</column>
  <tr class="deptitem">
    <td height="30" colspan="2"><%deptlist.name%></td>
  </tr> 
  <column>def</column>
</sl.deptlist>
</table>
需要匹配到 <column>abc</column> <column>def</column> 而不是所有的<column></column>
三人行必有师 2012-11-21
  • 打赏
  • 举报
回复
<column>(\w+)</column 括号打成中文的了。
三人行必有师 2012-11-21
  • 打赏
  • 举报
回复
<column>(\w+)</column

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧