Javascript正则表达式转C#

流浪河 2007-12-12 10:44:06
JS正则
<div\s+class=\\"tit\\">(?<Title><a\s+href=\\"(((?!class).)*?)\\">(.*?))</div>\\r\\n\\t<div\s+class=\\\"date\\\">(?<Date>((?!<).)*?)</div>
转成 C#该怎么写哦
我用
protected void Page_Load(object sender, EventArgs e)
{

// 正则表达式对象
Regex re = new Regex(@"<div\s+class=\\""tit\\"">(?<Title><a\s+href=\\""(((?!class).)*?)\\"">(.*?))</div>\\r\\n\\t<div\s+class=\\\""date\\\"">(?<Date>((?!<).)*?)</div>", RegexOptions.IgnoreCase | RegexOptions.Multiline);

string mystr="<div class=\"tit\"><a href=\"/liulanghe/blog/item/3788c4095b9f17276a60fbfc.html\" target=\"_blank\">高级点的正则表达式</a></div>\r\n\t<div class=\"date\">2007年12月08日 星期六 11:04</div>";
// Match 对象
Match m = re.Match(mystr);

// 是否找到
if( m.Success )
{
Response.Write("true");
}
else
{
// 未找到
}
}
找不到匹配的
...全文
128 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
流浪河 2007-12-12
  • 打赏
  • 举报
回复
回楼上的
我的意思是说我那个正则表达式是JS的,在JS环境中可以正常匹配 达到预期效果
但是我现在想把它转换成C#的 在后台直接匹配
wuhq030710914 2007-12-12
  • 打赏
  • 举报
回复
没有原始的
<div\s+class=\\"tit\\"> (? <Title> <a\s+href=\\"(((?!class).)*?)\\"> (.*?)) </div> \\r\\n\\t <div\s+class=\\\"date\\\"> (? <Date> ((?! <).)*?) </div>
这个是JS的
自己写的
可以正常匹配
-------------------------------------------------------
要是这样LZ看看是不是在拷贝的过程中产生的空格影响了匹配的结果
流浪河 2007-12-12
  • 打赏
  • 举报
回复
回楼上的
<div\s+class=\\"tit\\"> (? <Title> <a\s+href=\\"(((?!class).)*?)\\"> (.*?)) </div> \\r\\n\\t <div\s+class=\\\"date\\\"> (? <Date> ((?! <).)*?) </div>
要取出其中的Title组合Date组
过滤就是说如果链接中含有class属性的就不要

symbol441 2007-12-12
  • 打赏
  • 举报
回复
匹配这个字符串的
且过滤链接中有class属性的链接
-

还是不明白,可能是我的理解能力出问题了,
匹配这个字符串的?的什么,全部,部分,还是?
lovehongyun 2007-12-12
  • 打赏
  • 举报
回复
up
流浪河 2007-12-12
  • 打赏
  • 举报
回复
没有原始的
<div\s+class=\\"tit\\">(?<Title><a\s+href=\\"(((?!class).)*?)\\">(.*?))</div>\\r\\n\\t<div\s+class=\\\"date\\\">(?<Date>((?!<).)*?)</div>
这个是JS的
自己写的
可以正常匹配
流浪河 2007-12-12
  • 打赏
  • 举报
回复
<div class=\"tit\"> <a href=\"/liulanghe/blog/item/3788c4095b9f17276a60fbfc.html\" target=\"_blank\"> 高级点的正则表达式 </a> </div> \r\n\t <div class=\"date\"> 2007年12月08日 星期六 11:04 </div>
匹配这个字符串的
且过滤链接中有class属性的链接
symbol441 2007-12-12
  • 打赏
  • 举报
回复
你直接说你要匹配什么东东...
与其改还不如直接写,你也不说你原始的正则表达式是什么
在JS当中也是经过了部分转义的,我把JS里面的部分再拿过来转义肯定会出错.
wuhq030710914 2007-12-12
  • 打赏
  • 举报
回复
你直接说你的正则是干什么用的就行了,要不我们也不知道怎么帮你改呀?
wuhq030710914 2007-12-12
  • 打赏
  • 举报
回复
试试LS的
流浪河 2007-12-12
  • 打赏
  • 举报
回复
TO LS的
测试了 还是false

protected void Page_Load(object sender, EventArgs e)
{

// 正则表达式对象
Regex re = new Regex("<div\\s+class=\\\\\"tit\\\\\">(?<Title><a\\s+href=\\\\\"(((?!class).)*?)\\\\\">(.*?))</div>\\\\r\\" +
"\\n\\\\t <div\\s+class=\\\\\\\"date\\\\\\\">(?<Date>((?!<).)*?)</div>", RegexOptions.IgnoreCase | RegexOptions.Multiline);

string mystr="<div class=\"tit\"><a href=\"/liulanghe/blog/item/3788c4095b9f17276a60fbfc.html\" target=\"_blank\">高级点的正则表达式</a></div>\r\n\t<div class=\"date\">2007年12月08日 星期六 11:04</div>";
// Match 对象
Match m = re.Match(mystr);

// 是否找到
if( m.Success )
{
Response.Write("true");
}
else
{
// 未找到
}
}
symbol441 2007-12-12
  • 打赏
  • 举报
回复
试试,我就按你那个JS正则来转义的


string regex = "<div\\s+class=\\\\\"tit\\\\\">(?<Title><a\\s+href=\\\\\"(((?!class).)*?)\\\\\">(.*?))</div>\\\\r\\" +
"\\n\\\\t <div\\s+class=\\\\\\\"date\\\\\\\">(?<Date>((?!<).)*?)</div> \r\n";


流浪河 2007-12-12
  • 打赏
  • 举报
回复
那该怎么写呢?
自己重写了下不用@老是语法错误
wuhq030710914 2007-12-12
  • 打赏
  • 举报
回复
是因为你的表达式里面又用了"@"又用了"\"转义的缘故吧
流浪河 2007-12-12
  • 打赏
  • 举报
回复
经过N遍改进 终于搞定

string Patten;
Patten = "<div\\s+class=\\\"tit\\\">(?<Title><a\\s+href=\\\"(((?!class).)*?)\\\">(.*?))</div>\\\r\\\n\\\t<div\\s+class=\\\"date\\\">(?<Date>((?!<).)*?)</div>";

通过 散分
symbol441 2007-12-12
  • 打赏
  • 举报
回复
试试

由于水平有限,在那个class的位置在链接中所在的位置不固定的时候无法判断
下面的正则式只有当

<a class="chi" href="/liulanghe/blog/item/3788c4095b9f17276a60fbfc.html" target="_blank"> 高级点的正则表达式 </a>
这种形式时是无法匹配的,即当其class 在a空隙的右侧时

string reg="<div[\\s\\S]+?>\\s*(?<title>\\s*<a(?!class.*?)\\s+href[\\s\\S]*?target[\\s\\S]*?</a>)\\s*</div>.*?<div\\s*class="date">(?<date>[\\s\\S]*?)</div>"



62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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