2012-07-19 116 views
0

我需要帮助写一个正则表达式来赶以下情况:寻找特殊号码的正则表达式表达

number*number1242*1242333*333*的两边数字相同,但可以有不同的长度。

+2

嗨,欢迎来到SO!当问及问题时,我们表示赞赏。那么,你有什么尝试过自己? =) – 2012-07-19 07:48:26

+0

*两个数字相同,但长度可以不同。*这怎么可能? – Otiel 2012-07-19 07:50:29

+0

I -think- OP意味着'*'的两边始终是相同的数字,但数字本身可以是不同的长度,就像它们的示例所示。 =) – 2012-07-19 07:52:37

回答

4

这将解决奥弗的回答是:

\b(\d+)\*\1\b 

解释:

\b - word boundary 
(- start capturing group 
\d+ - digits (one or more) 
) - stop capturing group 
\* - literal * 
\1 - matches exactly what is captured by group 1 
\b - word boundary 
+0

+1,确实非常好! – Shai 2012-07-19 07:57:21

+0

+1。现在解释每个操作员。 ;) – 2012-07-19 07:57:42

+0

更优雅,首先'\ b'将在外面。我更新了我的答案。 – 2012-07-19 08:00:58

1

这就是:

(\d+)\*\1

它保证右侧是一样的左侧。

编辑

为了确保没有误报(虽然我认为这应该是一个问题,如果编程正确)使用这个版本(比尤金的略有不同,一点点优雅):

\b(\d+)\*\1\b

+0

不会工作,即评估它在1234 * 4321将产生4 * 4 – Shai 2012-07-19 07:50:44

+1

但它不是相同的数字! – 2012-07-19 07:54:34

+0

但是,Shai确实有一点。它会给出误报。 – 2012-07-19 07:55:40