我需要帮助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, "");
}
答案 0 :(得分:0)
如果您只想要“确认订单是必填项”之前的数字,您可以使用以下正则表达式:
(?<==>\s)\d+?\s*Confirmation of Order is mandatory.+?ItemMaterial NumberDescription\d+?Order\s\d+-?\d+
如果您的模式始终保持不变,则上述正则表达式应该起作用。
将上述正则表达式模式与RegexOptions.Singleline
选项一起使用。