Saya menggunakan regex berikut untuk mencocokkan data seperti yang ditunjukkan di bawah ini. Hanya yang ke-2 dan ke-3 yang cocok bukan yang pertama. Adakah yang bisa membantu saya mengetahui apa yang saya lakukan salah?

Pada dasarnya saya ingin mencocokkan segmen pertama dan kedua dan terakhir dari teks.

Data:

306279 ABC TILT ROSE LVG
123456 ABC Chocolate PanL CH
123456 SSS Front Chocolate CH_Q

Keluaran yang Diharapkan

ProductNo   mattype     colorcode
---------   -------     ---------
306279      ABC         LVG
123456      ABC         CH
123456      SSS         CH_Q

Ekspresi reguler saya: Regex:

^(?<productno>\d{6})\s(?<mattype>\w+)\s(?<body>(?:(?![A-Z]{2}).)*)((?<colorcode>[A-??Z]{2}(?:_[A-Z])?)?)$

Terima kasih

0
Mukil Deepthi 27 Juli 2016, 19:09
Ini bukan pertanyaan c#, ini pertanyaan .NET. .NET mesin regex. Bahasa tidak relevan.
 – 
rory.ap
27 Juli 2016, 19:13
Saya menulis ini dalam C#. Harap abaikan bahasanya dan bisakah Anda membantu saya menemukan solusinya?
 – 
Mukil Deepthi
27 Juli 2016, 19:15

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan regex seperti ini:

(\d+)\s+(\w+).*\s(\w+)$

Demo kerja

Berdasarkan kolom Anda, Anda dapat menamai grup seperti:

(?<ProductNo>\d+)\s+(?<mattype>\w+).*\s(?<colorcode>\w+)$

Regular expression visualization

3
Federico Piazza 27 Juli 2016, 19:20
Itu keren. Apakah mungkin untuk menghapus _Q untuk kasus ke-3 saat cocok? Saya hanya perlu memiliki 3 karakter terakhir atau jika memiliki _Q, hapus _Q dan dapatkan.
 – 
Mukil Deepthi
27 Juli 2016, 19:25
Saya kira Anda dapat menggunakan (\d+)\s+(\w+).*\s([A-Z]+)(?:_Q)?$. Periksa di sini regex101.com/r/zD0hI4/2
 – 
Federico Piazza
27 Juli 2016, 19:39
Saya suka bagaimana Anda menempatkan gambar debuggex.com di balasan untuk membantu memperjelas pengelompokan. Terima kasih telah berbagi sumber daya ini.
 – 
Paurian
27 Juli 2016, 19:45
@Paurian, terima kasih... debuggex cukup berguna untuk menampilkan pola
 – 
Federico Piazza
27 Juli 2016, 19:48
Terima kasih banyak dan seperti yang disebutkan Paurian, gambar debugged.com sangat fantastis.
 – 
Mukil Deepthi
28 Juli 2016, 09:06