2015-10-09 3 views
1

Я написал регулярное выражениеRegex - использование согласования группа

0[\.\-/]0[\.\-/]0 

сравнить следующие закономерности;

  • 0.0.0
  • 0-0-0
  • 0/0/0

Но это также соответствует

  • 0.0-0

Этого я не хочу. Итак, есть ли способ сопоставить уже согласованную последовательность?

0[\.\-/][email protected] 
+1

Group определение класса и обратной ссылки, чтобы заявить то же самое между символ соответствует. – hwnd

ответ

1
0([./-])0\\1(0) 

Вы должны будете использовать group, а затем backreference его с помощью \1 .Увидь демо.

https://regex101.com/r/mG8kZ9/3

+1

Не уверен, но я думаю, что вы смешиваете обратную косую черту. Если '\ .', то' \ 1' (raw pattern). Если '\\.', То '\\ 1' (строка Java должна быть скомпилирована в шаблон). – Amadan

+0

@ Амадан да отредактирован. – vks

+0

'[\\. \\ - /]' можно упростить до '[-. /]'. – Keppil

1

Да, ваше название говорит совершенно: группы. Также называется захватами. Обычные круглые скобки будут захватывать субматрицы; обратная косая черта с номером будет ссылаться на захваты по порядку.

0([\.\-/])0\{1}0 

или

0([\.\-/])0\1[0] 

(потому что \10 что-то еще, так что мы должны использовать альтернативный синтаксис или разграничить их должным образом). \1 (или \{1}) относится к контенту между первой открытой скобкой (то есть не (?:...), а не (?=...), всего (...)) и ее соответствующей закрывающей.

+0

Спасибо за подробное объяснение. –

0

Вы можете попытаться использовать группы как: (0.0.0) | (0/0/0) | (0-0-0)

+0

У меня на самом деле более сложный узор. Я упростил его, задавая вопрос. –

Смежные вопросы