Регулярное выражение: сопоставить любой символ a, конкретный символ b, а затем снова a - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь реализовать алгоритм на Java, и мне нужен способ сопоставления с шаблоном, в котором я нахожу любой символ (назовем его a), затем символ 'X' и затем тот же символ a, что и раньше. Первоначальной мыслью было регулярное выражение, хотя после некоторого времени, когда я не смог найти способ сделать это, я подумал об итерациях по всем символам и проверке их один за другим ...

Но до этого, если кто-то мог помочь, мне нужно что-то, чтобы ("AXA", "EXE", "RXR" и т. Д.) Соответствовали, в то время как ("AXB", "EXA", "TXX" и т. Д.) нет.

Попробовал что-то вроде ".X." но, конечно, не удалось, поскольку он соответствовал чему-либо до и после 'X' ...

Есть ли способ сопоставить что-то подобное?

1 Ответ

3 голосов
/ 12 апреля 2019

Захватите начальный символ и используйте обратную ссылку:

(.)X\1

См. демоверсия .

Обратите внимание, что в Java вам нужно использовать 2 слеша для буквального слеша:

"AXA".matches("(.)X\\1") // true
...