正则表达式检查零件是否相同

时间:2015-05-26 10:29:36

标签: regex perl

所以我有例如表达式,它有三个部分,例如: 123.XY12345.123 如何检查第一部分(123)是否与第三部分(123)相同? 我试过这样的事情:

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

4 个答案:

答案 0 :(得分:3)

仅在表达式的末尾添加\1。它将匹配第一个捕获组。

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

DEMO

答案 1 :(得分: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"; } < / p>

像这样:

{{1}}

答案 2 :(得分:1)

你可以使用这个正则表达式匹配,如果第三部分等于第一部分,它将只匹配整个字符串

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

使用此Demo进行测试

答案 3 :(得分:0)

你可以试试这个:

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

\1匹配与第一个捕获组最近匹配的文本相同的文本。

输入:

123.XY12345.123