我试图设置一个基于一些条件的匹配语句。安装 - 匹配语句
这些是我的条件: 包含节假日的行遵循这些规则。
- 它们包含文本“标题”,其次是
- 一个或多个任意字符,然后
- 文本“时:”(注意空格),其次是
- 3 “字”字符和空格,然后是
- 日期格式为“dd mmm yyyy”(即“2012年12月31日”),然后是
- 字符不是空格,“单词”或“数字“
与加下划线的项目符号点匹配的字符是需要提取的字符,并将其转换为[日期时间]值并返回给调用者。
数据样本基于假期日期。焦点线处于BOLD状态。
<br />Event Status: confirmedhttp://www.google.com/calendar/event?eid=MjAxNTAyMTRfNjBvMzBkcjQ2c28zMGMxZzYwbzMwZHI0Y28gdXNhX19lbkBo' title='alternate'/>http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic/20150214_60o30dr46so30c1g60o30dr4co'/>Holidays in United States http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic/20140214_60o30dr46so30c1g60o30dr4ck 2014-03-24T19:02:40.000Z2014-03-24T19:02:40.000Zhttp://schemas.google.com/g/2005#kind' term=' http://schemas.google.com/g/2005#event '/>Valentine's DayWhen: Fri 14 Feb 2014<br><br>Who: Holidays in United States
这是我到目前为止有: 'title.*when:\s+(\w{1,3})\s(?<Date>)(?\S\W\D)'
我得到这个错误:
parsing "title.*when:\s+(\w{1,3})\s(?<Date>)(?\S\W\D)" - Unrecognized grouping construct. At D:\test.ps1:9 char:8 + if ($_ -match 'title.*when:\s+(\w{1,3})\s(?<Date>)(?\S\W\D)') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], ArgumentException + FullyQualifiedErrorId : System.ArgumentException
我做了什么错?
你缺少正规的一部分表达式与实际日期匹配 –
我应该用'\ d {1,2} \ s \ w {1,3} \ s \ d {1,4}'替换(??)吗? –
learn2code
是的,诀窍,'(? ...)'构造被称为“命名组”,它只是提供了一种检索方式匹配的文本。你可以这样做:'(? \ d {1,2} \ s \ w {1,3} \ s \ d {1,4})',然后你可以从“日期“组。阅读一下“有名的团体”。 –