正则

后浪 2010-09-20 02:53:22
[ini]
starttime=2007-07-01 00:00:01
days=2048
[time_day]
morning=09:00:00~12:00:00
afernoon=13:30:00~17:30:00
[time_week]
周六=6
周日=0
[time_workday]
春节调休=2010-02-20~2010-02-21
端午调休=2010-06-12~2010-06-13
中秋调休=2010-09-19
中秋调休2=2010-09-25
国庆调休=2010-09-26
国庆调休2=2010-10-09
[time_freeday]
元旦=2010-01-01~2010-01-03
春节=2010-02-13~2010-02-19
清明=2010-04-03~2010-04-05
五一=2010-05-01~2010-05-03
端午=2010-06-14~2010-06-16
中秋=2010-09-22~2010-09-24
国庆=2010-10-01~2010-10-07
***********************************************
现在有上面一文本,我想把

元旦=2010-01-01~2010-01-03
春节=2010-02-13~2010-02-19
清明=2010-04-03~2010-04-05
五一=2010-05-01~2010-05-03
端午=2010-06-14~2010-06-16
中秋=2010-09-22~2010-09-24
国庆=2010-10-01~2010-10-07 这一段天数 用正则总和起来
...全文
162 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
分2步:
先用:
\[time_freeday\][^\[\]]+
找到整段
然后
([\d-]+)~([\d-]+)
捕获到每个时间段
后浪 2010-09-20
  • 打赏
  • 举报
回复
我就(\d{4}-\d{2}-\d{2})~(\d{4}-\d{2}-\d{2})这样取算了

还是学到asp不支持捕获,和反向引用
后浪 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 lxcnn 的回复:]
asp中不支持逆序环视,也不支持命名捕获组

分两步吧,先提出出[time_freeday]整体,再从中提取出日期
[/Quote]

过客哥哥啊,你再帮我写一下

<%
regex.Pattern = "(?<=\[time_freeday\](\D*\d{4}-\d{2}-\d{2})*\D*)(?<from>\d{4}-\d{2}-\d{2})~(?<to>\d{4}-\d{2}-\d{2})"
regex.IgnoreCase = True
regex.Global = True

Set matches = regex.Execute(strVocation)

For Each match in matches
found = match.Value

response.Write(found&"</BR>")
Next
%>asp代码就这样了
Canny 2010-09-20
  • 打赏
  • 举报
回复
我对正则不会,我是来学习的!
-过客- 2010-09-20
  • 打赏
  • 举报
回复
asp中不支持逆序环视,也不支持命名捕获组

分两步吧,先提出出[time_freeday]整体,再从中提取出日期
后浪 2010-09-20
  • 打赏
  • 举报
回复
继续等到下班!
后浪 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wuyazhe 的回复:]
Regex Match Tancer和.net的稍微有点规则不同。
不懂asp。
创建控制台程序。你实际运行一下就看得到结果了。但的确在Regex Match Tancer中不能通过。
[/Quote]
正则怎么就这么不兼容呢
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
算了,你也不用试了,我用的Captures,估计你不知道。Matcher中貌似也是不支持。
jxmlearner 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xiaoye_loison 的回复:]
刚让我看到希望了,被asp破灭了
中秋节过了辞职,转.net
[/Quote]
赞一个,楼主好好胆识!
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
Regex Match Tancer下\w无法匹配中文导致的。
\[time_freeday\](\s*(?<reson>[^=]+)=(?<from>[\d\-]+)~(?<to>[\d\-]+))
这样就可以了。
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
Regex Match Tancer和.net的稍微有点规则不同。
不懂asp。
创建控制台程序。你实际运行一下就看得到结果了。但的确在Regex Match Tancer中不能通过。
后浪 2010-09-20
  • 打赏
  • 举报
回复
刚让我看到希望了,被asp破灭了
中秋节过了辞职,转.net
后浪 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wuyazhe 的回复:]
引用 17 楼 xiaoye_loison 的回复:
引用 14 楼 wuyazhe 的回复:
C# code
Match m = Regex.Match(test, @"\[time_freeday\](\s*(?<reson>\w+)=(?<from>[\d-]+)~(?<to>[\d-]+))+");
int sum = 0;
for (int i = 0; i < m.Group……
[/Quote]
我放Regex Match Tancer里面测试的
刚才过客的可以匹配,你这个匹配不到
但是过客的拿到asp就不行了..
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiaoye_loison 的回复:]
引用 14 楼 wuyazhe 的回复:
C# code
Match m = Regex.Match(test, @"\[time_freeday\](\s*(?<reson>\w+)=(?<from>[\d-]+)~(?<to>[\d-]+))+");
int sum = 0;
for (int i = 0; i < m.Groups[1].Captures.Count; i++)
{……
[/Quote]
c#下测试结果29。没测试怎么可能贴出来。
不过不懂asp。不知道asp的写法。
不懂装懂 2010-09-20
  • 打赏
  • 举报
回复
正则到是不复杂,关键是在asp里能过
后浪 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyazhe 的回复:]
C# code
Match m = Regex.Match(test, @"\[time_freeday\](\s*(?<reson>\w+)=(?<from>[\d-]+)~(?<to>[\d-]+))+");
int sum = 0;
for (int i = 0; i < m.Groups[1].Captures.Count; i++)
{
DateTime d1 = Co……
[/Quote]
应该支持的,你能不能测试成功了再发给我..我都不知道哪里有错
zhangaijiang 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyazhe 的回复:]
C# code
Match m = Regex.Match(test, @"\[time_freeday\](\s*(?<reson>\w+)=(?<from>[\d-]+)~(?<to>[\d-]+))+");
int sum = 0;
for (int i = 0; i < m.Groups[1].Captures.Count; i++)
{
DateTime d1 = Co……
[/Quote]

支持逍遥 ,厉害

d234884085 2010-09-20
  • 打赏
  • 举报
回复
观摩 学习
兔子-顾问 2010-09-20
  • 打赏
  • 举报
回复
Match m = Regex.Match(test, @"\[time_freeday\](\s*(?<reson>\w+)=(?<from>[\d-]+)~(?<to>[\d-]+))+");
int sum = 0;
for (int i = 0; i < m.Groups[1].Captures.Count; i++)
{
DateTime d1 = Convert.ToDateTime(m.Groups["from"].Captures[i].Value);
DateTime d2 = Convert.ToDateTime(m.Groups["to"].Captures[i].Value);
sum += (d2 - d1).Days + 1;
}
sum就是天数,不知道asp支不支持捕获?

后浪 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lxcnn 的回复:]
你是想求节假日天数总和?


C# code
Regex reg = new Regex(@"(?<=\[time_freeday\](\D*\d{4}-\d{2}-\d{2})*\D*)(?<from>\d{4}-\d{2}-\d{2})~(?<to>\d{4}-\d{2}-\d{2})");
MatchCollection mc = reg.Matches(yourStr);
fo……
[/Quote]
要这结果, 我晕asp不支持零宽断言(?<=
能不能跟我用asp写个
加载更多回复(12)

62,025

社区成员

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

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

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

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