2015-05-26 4 views
1

Итак, у меня есть выражение, которое состоит из трех частей: 123.XY12345.123 Как проверить, является ли первая часть (123) такой же, как и третья часть (123)? я пытался что-то вроде этого:Регулярно проверяйте, являются ли части одинаковыми.

\[0-9]{3}[/.][a-zA-Z]{2}[0-9]{5}[/.] _____ (here no idea) 

ответ

3

Добавить только \1 в конце вашего выражения. Он будет соответствовать первой группе захвата.

([0-9]{3})[/.][a-zA-Z]{2}[0-9]{5}[/.]\1 

DEMO

2

Вы можете использовать ссылку обратно. Обратные ссылки могут использоваться для адресации содержимого ранее захваченного шаблона - в самом шаблоне. \1 адресует содержимое группы \1 и так далее. Но учтите, что если вы захватили менее 10 группы, \11 будет указывать на содержимое захвата группы 1плюс буквальное 1

Как это:

$a = "123_abc_123"; 
if($a =~ /(\d+)_abc_\1/) { 
    print "yes"; 
} else { 
    print "no"; 
} 

$a = "123_abc_456"; 
if($a =~ /(\d+)_abc_\1/) { 
    print "yes"; 
} else { 
    print "no"; 
} 
0

Вы можете попробовать это:

^(\d+)\..*\.\1$ 

\1 соответствует такому же самому тексту, который был согласован первой группой захвата.

Вход:

123.XY12345.123 
1

вы можете использовать это регулярное выражение для матча, он будет соответствовать только всю строку, если третья часть равна первой части

^([^.]+).[^.]+.\1$ 

использовать этот Demo для тестирования

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