2016-03-06 66 views
1

在這個正則表達式中(\d*)[\^*{2}](\d*)我試圖捕獲一個電源公式的數字:例如2^3應該返回2和3,而4 ** 5應該返回4和5。在第一種情況下,有什麼想法?正則表達式中的電源

+0

您的鏈接regex101完美地描述了它。正則表達式對於你想要做的事情是錯誤的。 – migg

回答

3

*{2}位沒有做你認爲它正在做的事,因爲它在一個類([])。它將接受班級中的每個單獨的字符(類中唯一的元字符是^-)。所以你的表情會接受121,1 {4等。可能是這樣的:

(\d+)(?:\^|\*{2})(\d+) 

更接近標記。

+0

@migg謝謝!剛剛發現了。 – ig0774

+0

由於@ migg的解決方案存在一些缺陷,所以我▲選擇了這個。 – 2016-03-06 13:18:42

1

這將是正確的:

(\d*)(?:\^|\*{2})(\d*) 

你是從字面上符合[]內一切這是不是你想要的。

+0

儘管@ ig0774有類似的解決方案,但'*'確實在搜索上有所不同。它也允許第一個或最後一個數字是'可選的',就好像不存在一樣,因此匹配'** 5','2 **','^ 4','**','^'。 – 2016-03-06 13:17:47

+0

@noob你說得對。我試圖保持它接近原來的原因,因爲如果例如OP沒有聲明的話。 '^ 5'應該匹配或不匹配。問題顯然在'[]'之間。所以「bug」是一個伸縮恕我直言。 – migg

+0

當我說**錯誤**我的意思是意想不到的行爲。 – 2016-03-06 17:37:23

相關問題