Tìm chuỗi regex để tôi tìm nhóm chữ số bên phải (nếu có) được nhúng trong chuỗi. Chúng tôi chỉ quan tâm đến các chữ số tiếp giáp. Chúng tôi không quan tâm đến dấu, dấu phẩy, số thập phân, v.v. Nếu tìm thấy đơn giản chỉ nên được coi là không phải chữ số giống như một chữ cái.Chuỗi RegEx nào sẽ tìm nhóm chữ số cuối cùng (ngoài cùng bên phải) trong chuỗi?
Đây là mục đích thay thế/tăng dần vì vậy chúng tôi cũng cần lấy mọi thứ trước và sau số được phát hiện để chúng tôi có thể tạo lại chuỗi sau khi tăng giá trị để chúng tôi cần regex được mã hóa.
Dưới đây là ví dụ về những gì chúng ta đang tìm kiếm:
- "abc123def456ghi" cần xác định the'456'
- "abc123def456ghi789jkl" cần xác định the'789'
- "abc123def" nên xác định' 123'
- "123ghi" cần xác định the'123'
- "abc123,456ghi" cần xác định the'456'
- "abc-654def" nên ide ntify the'654'
- 'abcdef' không nên trả lại bất kỳ trận đấu
Như một ví dụ về những gì chúng ta muốn, nó sẽ là một cái gì đó giống như bắt đầu với cái tên 'mục 4-1a', giải nén ra '1' với mọi thứ trước khi là tiền tố và mọi thứ sau hậu tố. Sau đó, bằng cách đó, chúng ta có thể tạo ra các giá trị 'Item 4-2a', 'Item 4-3a' và 'Item 4-4a' trong một vòng lặp mã.
Bây giờ, nếu tôi đang tìm tập đầu tiên, điều này sẽ dễ dàng. Tôi chỉ tìm khối tiếp giáp đầu tiên gồm 0 hoặc nhiều chữ số không cho tiền tố, sau đó khối 1 hoặc nhiều chữ số tiếp giáp cho số, sau đó mọi thứ khác đến cuối sẽ là hậu tố.
Vấn đề tôi gặp phải là cách xác định tiền tố là bao gồm tất cả các số (nếu có) trừ tập hợp cuối cùng. Tất cả mọi thứ tôi cố gắng cho tiền tố giữ nuốt rằng tập cuối cùng, ngay cả khi tôi đã cố gắng neo nó vào cuối bằng cách cơ bản đảo ngược ở trên.
Bạn có thể [split] (http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.split.aspx) bằng cách sử dụng regex do @Birei cung cấp và cập nhật chỉ mục thứ hai trước khi ghép nối để có được kết quả mong muốn. –
Bạn có thể chia tay bằng cách nào? Nếu chuỗi là a44b44c thì sao? Tiền tố phải là 'a44b' và nếu tôi sẽ tham gia vào quá nhiều thao tác thủ công, thì đánh bại bằng regex đã hỗ trợ các thẻ được đặt tên. – MarqueIV
Bằng cách tách, tôi có nghĩa là (Regex.Split) [http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.split.aspx], do đó siêu liên kết trong chú thích trước. Áp dụng 'Regex.Split()' với 3 mã thông báo cho 'a44b44c' viz. 'a44b',' 44' và 'c'. –