求个简单的正则表达式

net205 2011-09-29 10:15:16
var abc = new string[] { "news", "/news", "/news/", "/news/abc", "/news/abcdew/", "/news/abcd/test.aspx", "/news/add/abc.jpb", "/news/wew/news/"};

这样的字符串,我想匹配到news后面第一个斜线与第二个斜线之间的字符,结果应该是:
"news" -> 失败
"/news" -> 失败
"/news/" -> 失败
"/news/abc" -> 成功,groups[1]为 abc
"/news/abcdew/" -> 成功,groups[1]为 abcdew
"/news/abcd/test.aspx" -> 成功,groups[1]为 abcd
"/news/add/abc.jpb" -> 成功,groups[1]为 add
"/news/wew/news/" -> 成功,groups[1]为 wew

我目前使用的是/news/(.+?)(/\.)?和/news/(.+)?(/\.)? ,这2个都不行。
...全文
299 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangwenquan123 2011-10-11
  • 打赏
  • 举报
回复
时隔10天lz在次现身
            List<string> list = new List<string> { "/gz", "/", "/gz?a=23", "/gz/abc.aspx", "/gz/abc.aspx?id=23", "/job/", "/job/?abc=233", "/job#top", "/job/?abc=233#top" };
Regex reg = new Regex(@"(?<=/)[^#?/]+");
foreach (string s in list)
Console.WriteLine(reg.Match(s).Value);
net205 2011-10-11
  • 打赏
  • 举报
回复
还有类似这样的:
/job#top     -> 能匹配,得到job
/job/?abc=233#top -> 能匹配,得到job
net205 2011-10-11
  • 打赏
  • 举报
回复
谢谢各位.
huangwenquan123的可以, sunny906的不满足要求,其他的几个好像可以,没仔细测

现在需求有变,情况是:
Request.RawUrl获取url后面的地址,有很多种情况,类似:
/gz
/
/gz?a=23
/gz/abc.aspx
/gz/abc.aspx?id=23
/job/
/job/?abc=233

除了上面第二个以外,其他的都要能匹配,配置到的字符应该是gz或job

我写了一个不符合要求:/(.+)[/|\?]*
然后取match.Groups[1].Value
sunny906 2011-09-30
  • 打赏
  • 举报
回复

string[] str = new string[] { "news", "/news", "/news/", "/news/abc", "/news/abcdew/", "/news/abcd/test.aspx", "/news/add/abc.jpb", "/news/wew/news/" };
foreach (string s in str)
{
Match match = Regex.Match(s, "/news/(?:.)+", RegexOptions.IgnoreCase);
Console.WriteLine(match.Value);
}

///news/abc
///news/abcdew/
///news/abcd/test.aspx
///news/add/abc.jpb
///news/wew/news/
querystringcom 2011-09-30
  • 打赏
  • 举报
回复
专业接分
nbgcqlk 2011-09-30
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"^.*news\/([^\/]+)\/?.*$");
Console.WriteLine(M.Groups[1].Value);
编程有钱人了 2011-09-30
  • 打赏
  • 举报
回复
3L正解!
编程有钱人了 2011-09-30
  • 打赏
  • 举报
回复
3L正解!
你的选择H 2011-09-29
  • 打赏
  • 举报
回复

var abc = new string[] { "news", "/news", "/news/", "/news/abc", "/news/abcdew/", "/news/abcd/test.aspx", "/news/add/abc.jpb", "/news/wew/news/" };

for (int i = 0; i < abc.Length; i++)
{

Console.WriteLine(Regex.Match(abc[i], @"(?<=/news/)\w*(?=/?)"));
}
/*
结果:
abc
abcdew
abcd
add
wew
*/
better0001 2011-09-29
  • 打赏
  • 举报
回复
顶起,学习。
huangwenquan123 2011-09-29
  • 打赏
  • 举报
回复
            string[] abc = new string[] { "news", "/news", "/news/", "/news/abc", "/news/abcdew/", "/news/abcd/test.aspx", "/news/add/abc.jpb", "/news/wew/news/" };
Regex reg = new Regex(@"(?<=news/)[^/]+");
foreach (string s in abc)
Console.WriteLine(reg.Match(s).Value);
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

111,129

社区成员

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

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

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