2 Câu hỏi: Tại sao nó không in nhóm Regex cuối cùng trong C # [trùng lặp]

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM
    

Câu hỏi này đã có câu trả lời tại đây:

    

Tôi đã viết mã regex chuyển tiếp rất thẳng này

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            string lines = "2019-05-07 11:50:28, INFO Ayush Singhania, Level 1, EID: 1001, UID: ayush.power, Message: Create a Job";
            Regex pattern = new Regex(@"(?<Date>.*?\s)(?<Time>.*?), INFO(?<Name>.*?),(?<Level>.*?), EID: (?<EID>.*?), UID: (?<UID>.*?), Message: (?<Message>.*?)");

            MatchCollection myMatchCollection = pattern.Matches(lines);
            foreach (Match myMatch in myMatchCollection)
            {
                var Date = myMatch.Groups["Date"].Value;
                var Time = myMatch.Groups["Time"].Value;
                var Name = myMatch.Groups["Name"].Value;
                var Level = myMatch.Groups["Level"].Value;
                var EID = myMatch.Groups["EID"].Value;
                var UID = myMatch.Groups["UID"].Value;
                var Message = myMatch.Groups["Message"].Value;

                Console.Out.WriteLine(Date);
                Console.Out.WriteLine(Time);
                Console.Out.WriteLine(Name);
                Console.Out.WriteLine(Level);
                Console.Out.WriteLine(EID);
                Console.Out.WriteLine(UID);
                Console.Out.WriteLine(Message);
            }
        }
    }
}

Đầu ra cho các mục sau là:

2019-05-07
11:50:28
Ayush Singhania
Cấp 1
1001
ayush.power
........... (Dòng cuối cùng trống)

Mọi thứ đều hoạt động tốt excel cho nhóm cuối cùng - "Tin nhắn"
Nó không in bất cứ thứ gì. Bất cứ ai có thể đề nghị tại sao nó là như vậy?
Ngoài ra tôi nghĩ rằng mô hình regex của tôi là chính xác. Kiểm tra nó ở đây https://regex101.com/r/ysawNT/1

    
0
  1. Hãy xem biểu thức chính quy cho nhóm cuối cùng (MSG): .*? Bạn có biết nó thực sự làm gì không? (Tìm hiểu /giải thích những gì dấu chấm . làm, tìm hiểu /giải thích những gì dấu hoa thị * làm gì và tìm hiểu /giải thích những gì dấu hỏi ? có gì)
    2019-05-08 16: 30: 08Z
  2. Xóa ? khỏi nhóm MSG của bạn để bây giờ: (?<MSG>.*) và gọi MSG thay vì Message
    2019-05-08 16: 30: 24Z
  3. MSG là một sai lầm. Tôi đã chỉnh sửa bài gốc. Tên của tiêu đề không phải là vấn đề. Đó là ? cuối cùng.
    2019-05-08 16: 37: 58Z
  4. 2 Câu trả lời                              2                         

    Ngoài việc sử dụng thông báo sai Groups["Message"] phải là MSG, phần cuối cùng trống vì phần cuối không có ranh giới và phần không tham lam .*? cũng không hài lòng.

    Những gì bạn có thể làm là khớp với phần còn lại của chuỗi bằng (?<MSG>.*)

    Bản demo Regex | bản demo C #

     nhập mô tả hình ảnh tại đây

        
    3
    2019-05-08 16: 35: 06Z
    1. MSG là một lỗi, tôi cũng đã sao chép nó ở đây. Tôi đã chỉnh sửa bài viết. Vấn đề là ở cuối ?. Loại bỏ nó. Làm việc như người ở!! Cảm ơn
      2019-05-08 16: 39: 55Z

    Nhóm của bạn phải là MSG

    var Message = myMatch.Groups["MSG"].Value;
    
        
    1
    2019-05-08 16: 28: 24Z
nguồn đặt đây