В строке строки с нечетным номером, как вы могли бы сопоставить (или захватить) средний символ?Как совместить средний символ в строке с регулярным выражением?
Возможно ли это с помощью PCRE, plain Perl или Java regex flavors?
С помощью .NET regex вы можете использовать balancing groups, чтобы решить эту проблему легко (это может быть хорошим примером). С помощью простого регулярного выражения Perl я подразумеваю не использование каких-либо кодовых конструкций, таких как (??{ ... })
, с помощью которых вы можете запускать любой код и, конечно же, что-либо делать.
Строка может иметь любую длину нечетного номера.
Например, в строке 12345
вы хотели бы получить символ 3
, символ в центре строки.
Это вопрос о возможностях современных ароматизаторов регулярных выражений, а не о лучшем алгоритме, который можно сделать каким-то другим способом.
Perl: Да. Использование рекурсии или '/^(. *) (.) (?? {'.' X length ($ 1)}) \ z/s' – ikegami
Разве это не зависит от контекста? – Oli
@ikegami, я думаю, я не должен был говорить Perl или, по крайней мере, не использовать Perl-код. В этом случае вы можете просто использовать базовую строковую функцию. – Qtax