2015-05-26 33 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測試匹配

相關問題