C# 句子的快速正则表达式

C# 句子的快速正则表达式,c#,regex,C#,Regex,我需要c中以下正则表达式的帮助。我有一个给定的字符串,我正试图像这样选择文本。该字符串来自发票。剩余的项目将是购买的项目 510258-350-JDX 84008043942000 Confirmation of Order is mandatory.994007029908500 ItemMaterial NumberDescription64008029908500Order 840780-16742500 Long text *** Text*** ==> 840080439420

我需要c中以下正则表达式的帮助。我有一个给定的字符串,我正试图像这样选择文本。该字符串来自发票。剩余的项目将是购买的项目

510258-350-JDX 84008043942000 Confirmation of Order is mandatory.994007029908500 ItemMaterial NumberDescription64008029908500Order 840780-16742500
Long text *** Text***  ==> 84008043942000 Confirmation of Order is mandatory.994007029908500
ItemMaterial NumberDescription64008029908500Order 840780-16742500


510258-350JDFT8 84008043942000 Confirmation of Order is mandatory.994007029908500ItemMaterial NumberDescription94008029908500Order 840080-16742500 Long text 232 *** Text***  ==> 84008043942000 Confirmation of Order is mandatory.994007029908500
ItemMaterial NumberDescription64008029908500Order 840080-16742500
但我目前的方式不起作用。我想选择这些并从字符串中删除它们。示例中的数字可以更改

string r2 = raa.Replace(r1, "");
string rgconfirm ="";
string rgorder ="";

if (r2.Contains( "Confirmation")) {
    rgconfirm = Regex.Match(r2, @"(\d{14} Confirmation)").Groups[0].Value;
    if (r2.Contains("-")) {
        rgorder = Regex.Match(r2, @"(Order \d{6}-*+\d{8})").Groups[0].Value;
    }
}

string check1 = rgconfirm + "(.*?)" + rgorder;
var toreplace = Regex.Match(r2, check1).Groups[0].Value;

if (toreplace.Length > 2) {
    r2 = r2.Replace(toreplace, "");
}

如果您只想在订单文本确认之前输入数字,则可以使用以下正则表达式:

(?<==>\s)\d+?\s*Confirmation of Order is mandatory.+?ItemMaterial NumberDescription\d+?Order\s\d+-?\d+
如果您的模式始终保持不变,那么上面的正则表达式应该可以工作。
将上述正则表达式模式与RegexOptions.Singleline选项一起使用。

请准确指定要查找的输出。请注意,组[0]是整个匹配项。组[1]是第一个捕获组。GroupCollection对象的第一个元素Groups属性返回的索引0处的元素包含与整个正则表达式模式匹配的字符串。从索引1向上的每个后续元素表示一个捕获的组示例输入和输出以及预期的输出都会有所帮助。示例在问题中。我想要的输出在第一个代码块中==>之后。您想要订单确认前的编号是强制性的吗?我想要这样的文本:8400804392000订单确认是强制性的。994007029908500项目物料编号描述6400802908500订单840780-16742500再次更新。另外,请注意使用RegexOptions.Singleline选项。