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+)$
Berdasarkan kolom Anda, Anda dapat menamai grup seperti:
(?<ProductNo>\d+)\s+(?<mattype>\w+).*\s(?<colorcode>\w+)$
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