2012-11-23 27 views
0

我试图解决,如果我可以凝聚一个正则表达式的数量到一个单一的,但不能完全到达那里。正则表达式匹配不同地方的2个相同的字符类

我试图寻找一对匹配的字符,这可能是一个范围之一。

1 text 1  <--- This is a match 
1 text 2  <--- This is not a match 
2 text 1  <--- This is a match 

的选项列表是有限的,所以我知道我可以只单独测试每一种情况下,如:

1(.+?)1 
2(.+?)2 

不过,我试图用分组要做到这一点在一个查询中。

[1-8](.+?)[1-8] 

但是这(错误地)相匹配:沿着线的东西

1 text 2  <--- This is not a match 

有没有一种方法,我可以保证的是,第二个括号列表比赛是一样的比赛在第一支架?即如果第一个匹配1,那么第二个也必须是1?

回答

3

您需要使用组,然后参考该组

([1-8])(?:.+?)\1 

\1first捕获组即([1-8])

2

你想用back reference

([1-8])(.+?)\1 

这样的前面和后面的角色必须匹配整个事物才能被视为匹配。

相关问题