c#中的正则表达式可以匹配新行或忽略它

Regex in c# that could either match new line or ignore it

C# 中的正则表达式相对较新。努力做到这一点。

要求:

输入字符串格式:一些随机文本 XXXX 造成 XXXX 小时返工的干扰。由于 XXXX

中报告了一些随机文本

我需要从输入中获取所有 3 XXXX。

具体例子: 某些门户中列出的投诉如下所示 RequirementChanges 造成 200 小时[ 的干扰=37=] 的返工。因此,在 Excel.

中报告了一个请求

我的正则表达式应该给出结果: RequirementChanges , 200 小时, Excel.

有关输入字符串的附加信息是: 仅造成干扰,返工,reported in 将始终存在于输入字符串中。剩下的可以是任何随机文本,换行符可以在中间的任何地方,除了这 3 个常量字符串。 我打算在 c# 中解析这个输入字符串。请求您的意见。谢谢,

使用\s+ 匹配所有类型的垂直和水平换行符。它与 \S+ 相反,会匹配一个或多个非 space 字符。

@"\S+(?=\s+caused disturbance)|\S+\s+\S+(?=\s+of rework)|(?<=\breported in\s+)\S+"

代码:

String input = @"Complaint listed in some portal is like below RequirementChanges caused disturbance of 200 hours of rework. Due to this there is a request reported in Excel.";
Regex rgx = new Regex(@"\S+(?=\s+caused disturbance)|\S+\s+\S+(?=\s+of rework)|(?<=\breported in\s+)\S+");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);

IDEONE