C# 无法让正则表达式在c中提取mm/dd/yyyy

C# 无法让正则表达式在c中提取mm/dd/yyyy,c#,regex,parsing,C#,Regex,Parsing,我正在分析一个大字符串,除了抓取日期外,所有的工作都在进行 我尝试将以下内容放在图片中的Group3括号中,然后我丢失了包括Group1和Group2在内的所有正在工作的组: ^\d{1,2}/\d{1,2}/\d{4}$ /^\d{1,2}\/\d{1,2}\/\d{4}$/ /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ^((0|1)\d{1})-((0|1|2)\d{1})-((19|20)\d{2}) 最有效的

我正在分析一个大字符串,除了抓取日期外,所有的工作都在进行

我尝试将以下内容放在图片中的Group3括号中,然后我丢失了包括Group1和Group2在内的所有正在工作的组:

^\d{1,2}/\d{1,2}/\d{4}$

/^\d{1,2}\/\d{1,2}\/\d{4}$/

/^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/

^((0|1)\d{1})-((0|1|2)\d{1})-((19|20)\d{2})
最有效的正则表达式是Group1和Group2:

((?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,2})assigned by((?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,2}) on ()
以及数据样本: 1 xxxxx xxxxx于2018年10月8日由Alex xxxxx指定,请求由xxxxx于2018年10月8日提交,请求由xxxxx Olander于2018年10月8日创建 邮寄:1

注意:日期后的逗号并不总是在那里


在正则表达式模式中,如果不需要,不要试图通过创建一组东西来避免匹配所有存在的东西,而是找到锚并使用常规模式匹配来找到需要的东西

下面将使用由[sp]和[sp]在[sp]上提交的1的锚,然后我们将围绕该锚进行一般提取。最后,将使用基本日期模式来获取日期。请注意,我使用命名组捕获来简化提取

string data = "#1 xxxxx xxxxx assigned by Alex xxxxx on 08/10/2018,Request submitted by xxxxx on 08/10/2018,Request created by xxxxx Olander on 08/10/2018 Mailed: 1";

string pattern = @"
\#\d+\s+                      # Anchor for the #
(?<Person1>.+?)               # Match Person 1
(?=\sassigned\s)              # Look Ahead for assigned
\sassigned\sby\s              # Consume but don't match assigned
(?<Person2>.+?)               # Match person 2
(?=\son\s)                    # LA for son
\son\s                        # consume
(?<Date>\d\d\D\d\d\D\d\d\d\d) #Get date
";

Regex.Matches(data, pattern, RegexOptions.IgnorePatternWhitespace)
     .OfType<Match>()
     .Select(mt => new {
                         P1 = mt.Groups["Person1"].Value,
                         P2 = mt.Groups["Person2"].Value,
                         DTE = mt.Groups["Date"].Value,
                       } )
结果是一个项目列表,我猜您有多个捕获


为什么要使用“^”和$anchors?这似乎是你的问题。我让它起作用了,但我对正则表达式的理解不够,无法确定它是否足够强,可以容纳我的所有数据:?:[a-zA-Z'-]+[^a-zA-Z'-]+{0,2}分配者:[^a-zA-Z'-]+[a-zA-Z'-]+{0,2}在\d\d\/\d\d\d\d\d\d\d\d实际要从行中提取哪些数据?