使用C#正则表达式从字符串中获取多个数据

用户名

下面是我已经使用了一段时间的日志文件中的一行示例:

5/21/2015 11:55:56 PM | Batch 6|386/767|50.33 %|CH2M-R|Processed NXRMN5...Checking refundable and non-refundable fares. Traditional Booking. Inside ticketing window. Minimum Savings Required: $131.00. Actual Savings: $257.18. Savings found: $257.18 (11.55 %). Savings were previously found.

在此文件中,我需要捕获以下类别:第一个是日期和时间,第二个是Locator,它是NXRMN5,发现的节省以及此行中的百分比(如果有),为$ 257.18 11.5%。

在控制台中,我希望它看起来像这样:

Date:  5/21/2015 11:55:56 PM 
Locator: NXRMN5
Dollar Savings: $257.18 
Percent Savings: 11.55 %

下面有一些我已经工作了很长时间的代码:

foreach (string line in gdsLines)
        {
            Match m = Regex.Match(line, @"Savings\s+found:\s*\$(?<savings>\d+\.\d+)\s*\(\s*(?<percent>\d+\.\d+)\s*%");
            if (m.Success)
            {
                decimal gdsNumberSavings = decimal.Parse(m.Groups["savings"].Value, CultureInfo.InvariantCulture);
                decimal gdsNumberPercent = decimal.Parse(m.Groups["percent"].Value, CultureInfo.InvariantCulture);

                Console.WriteLine("Dollar Savings: $"  + gdsNumberSavings + " Percent Savings: " + gdsNumberPercent + " % " + "\n");
                gdsTotalSavings += gdsNumberSavings;
                gdsTotalPercentage += gdsNumberPercent;
            }
        } 

我提供的这段代码使用我制作的正则表达式,然后将找到的节省量和百分比都放入,然后在控制台中打印值。不必担心gdsTotal其他变量。主要关注的是正则表达式。为了添加我需要的其他元素,我是否需要创建另一个正则表达式,还是可以对其进行添加?不管哪种方式,有人可以帮助我形成此正则表达式吗?任何帮助将不胜感激!

维克多·史翠比维(WiktorStribiżew)

让我提出以下解决方案:

  1. 通过仅使用分割字符串|并获取第一个元素来提取日期
  2. 定位器是用正则表达式捕获的。

代码如下:

string line = "5/21/2015 11:55:56 PM | Batch 6|386/767|50.33 %|CH2M-R|Processed NXRMN5...Checking refundable and non-refundable fares. Traditional Booking. Inside ticketing window. Minimum Savings Required: $131.00. Actual Savings: $257.18. Savings found: $257.18 (11.55 %). Savings were previously found.";
string date = line.Split('|').Take(1).FirstOrDefault().Trim();
Match m = Regex.Match(line, @"Processed\s+(?<locator>[^.]+)\.{3}.*?Savings\s+found:\s*\$(?<savings>\d+\.\d+)\s*\(\s*(?<percent>\d+\.\d+)\s*%");
if (m.Success)
{
     decimal gdsNumberSavings = decimal.Parse(m.Groups["savings"].Value, CultureInfo.InvariantCulture);
     decimal gdsNumberPercent = decimal.Parse(m.Groups["percent"].Value, CultureInfo.InvariantCulture);
     string locator = m.Groups["locator"].Value;

     Console.WriteLine("Date:  " + date + ", Locator: " + locator + "Dollar Savings: $" + gdsNumberSavings + " Percent Savings: " + gdsNumberPercent + " % " + "\n");
     gdsTotalSavings += gdsNumberSavings;
     gdsTotalPercentage += gdsNumberPercent;
}

输出:

Date:  5/21/2015 11:55:56 PM, Locator: NXRMN5Dollar Savings: $257,18 Percent Savings: 11,55 % 

或者,您可以在单个正则表达式中使用相同的逻辑:

Match m = Regex.Match(line, @"^(?<date>[^|]+)\|.*Processed\s+(?<locator>[^.]+)\.{3}.*?Savings\s+found:\s*\$(?<savings>\d+\.\d+)\s*\(\s*(?<percent>\d+\.\d+)\s*%");

if块内:

string date = m.Groups["date"].Value.Trim();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式从字符串中获取 ASP.NET C# json 数据

来自分类Dev

在C#中使用正则表达式(正则表达式)从字符串获取值

来自分类Dev

使用正则表达式从R中的字符串中获取数据

来自分类Dev

使用正则表达式从R中的字符串中获取数据

来自分类Dev

正则表达式从字符串 c# 中获取数字

来自分类Dev

正则表达式使用C#从字符串获取值

来自分类Dev

使用正则表达式从数据中获取特定字符串

来自分类Dev

使用正则表达式获取多个可能字符串的子字符串

来自分类Dev

在R中没有正则表达式的数据框中用字符串替换多个数字

来自分类Dev

C#正则表达式从字符串中获取特定的字符串[关闭]

来自分类Dev

如何编写正则表达式模式以在 c# 中获取字符串的子字符串

来自分类Dev

使用正则表达式等替换C#中的字符串

来自分类Dev

使用C#中的正则表达式从html字符串中提取句子

来自分类Dev

如何使用正则表达式或linq替换C#中的特定字符串

来自分类Dev

如何使用正则表达式在C#中拆分字符串?

来自分类Dev

使用正则表达式解析 C# 中的字符串

来自分类Dev

正则表达式匹配字符串中的多个数字

来自分类Dev

正则表达式捕获字符串中的多个数组索引文字

来自分类Dev

JavaScript正则表达式-从字符串中获取第N个数字

来自分类Dev

正则表达式在字符串中获取两个数字

来自分类Dev

使用正则表达式从字符串中获取子字符串

来自分类Dev

使用正则表达式从输入字符串中获取键值字符串?

来自分类Dev

使用javascript正则表达式获取字符串中的最后一个数字

来自分类Dev

如何从字符串中提取特定的字符串并使用正则表达式在c#中递增

来自分类Dev

使用正则表达式C#在两个字符串的块中获取文本文件的多行字符串

来自分类Dev

正则表达式在JavaScript中获取字符串的多个段

来自分类Dev

正则表达式从具有多个 url 的字符串中获取图像 URL

来自分类Dev

正则表达式用字符串C#中的数字匹配多个匹配项

来自分类Dev

Python正则表达式从字符串中获取数据

Related 相关文章

  1. 1

    使用正则表达式从字符串中获取 ASP.NET C# json 数据

  2. 2

    在C#中使用正则表达式(正则表达式)从字符串获取值

  3. 3

    使用正则表达式从R中的字符串中获取数据

  4. 4

    使用正则表达式从R中的字符串中获取数据

  5. 5

    正则表达式从字符串 c# 中获取数字

  6. 6

    正则表达式使用C#从字符串获取值

  7. 7

    使用正则表达式从数据中获取特定字符串

  8. 8

    使用正则表达式获取多个可能字符串的子字符串

  9. 9

    在R中没有正则表达式的数据框中用字符串替换多个数字

  10. 10

    C#正则表达式从字符串中获取特定的字符串[关闭]

  11. 11

    如何编写正则表达式模式以在 c# 中获取字符串的子字符串

  12. 12

    使用正则表达式等替换C#中的字符串

  13. 13

    使用C#中的正则表达式从html字符串中提取句子

  14. 14

    如何使用正则表达式或linq替换C#中的特定字符串

  15. 15

    如何使用正则表达式在C#中拆分字符串?

  16. 16

    使用正则表达式解析 C# 中的字符串

  17. 17

    正则表达式匹配字符串中的多个数字

  18. 18

    正则表达式捕获字符串中的多个数组索引文字

  19. 19

    JavaScript正则表达式-从字符串中获取第N个数字

  20. 20

    正则表达式在字符串中获取两个数字

  21. 21

    使用正则表达式从字符串中获取子字符串

  22. 22

    使用正则表达式从输入字符串中获取键值字符串?

  23. 23

    使用javascript正则表达式获取字符串中的最后一个数字

  24. 24

    如何从字符串中提取特定的字符串并使用正则表达式在c#中递增

  25. 25

    使用正则表达式C#在两个字符串的块中获取文本文件的多行字符串

  26. 26

    正则表达式在JavaScript中获取字符串的多个段

  27. 27

    正则表达式从具有多个 url 的字符串中获取图像 URL

  28. 28

    正则表达式用字符串C#中的数字匹配多个匹配项

  29. 29

    Python正则表达式从字符串中获取数据

热门标签

归档