Trong chuỗi có độ dài số lẻ, bạn có thể khớp (hoặc chụp) ký tự ở giữa như thế nào?Làm thế nào để khớp với ký tự ở giữa trong một chuỗi với regex?
Điều này có thể thực hiện với PCRE, đồng bằng Perl hoặc Java regex flavor?
Với .NET regex, bạn có thể sử dụng balancing groups để giải quyết dễ dàng (đó có thể là một ví dụ tốt). Bởi đồng bằng Perl regex tôi có nghĩa là không sử dụng bất kỳ cấu trúc mã như (??{ ... })
, mà bạn có thể chạy bất kỳ mã và tất nhiên làm bất cứ điều gì.
Chuỗi có thể có bất kỳ độ dài số lẻ nào.
Ví dụ: trong chuỗi 12345
bạn muốn nhận được 3
, ký tự ở giữa chuỗi.
Đây là câu hỏi về khả năng của hương vị regex hiện đại chứ không phải về thuật toán tốt nhất để thực hiện điều đó theo một cách khác.
Perl: Vâng. Sử dụng đệ quy hoặc '/^(. *) (.) (?? {'.' X length ($ 1)}) \ z/s' – ikegami
Đây có phải là ngữ cảnh không nhạy cảm không? – Oli
@ikegami, tôi đoán tôi không nên nói Perl, hoặc ít nhất là không sử dụng mã Perl. Trong trường hợp đó bạn cũng có thể sử dụng một hàm chuỗi cơ bản. – Qtax