0

我正在尝试确定是否可以将多个正则表达式压缩为一个,但不能完全实现。

我正在尝试寻找一对匹配的字符,这可能是一个范围内的字符。

例如

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?

4

2 回答 2

3

您需要使用组,然后引用该组

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

\1指的是first捕获的组,即([1-8])

于 2012-11-23T13:51:27.230 回答
2

您想使用反向引用

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

这样,前后字符必须匹配才能使整个事物被视为匹配。

于 2012-11-23T13:55:06.510 回答