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