2015-05-26 32 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与第1个捕获组最近匹配的文本相同。

输入:

123.XY12345.123 
1

你可以使用这个表达式为你的对手,只会将整个字符串,如果第三部分是等于第一部分

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

使用这种Demo测试匹配

相关问题