2017-02-15 441 views
1

我有一個文本:正則表達式: D不工作

Wheels – F/R_ Schwalbe TABLE TOP/Schwalbe Black Jack 26x2.2

而且正則表達式從該串解析輪胎尺寸:

/.*Wheels.*(\d*)x/ 

但它不工作。此外,當我從正則表達式刪除星號,我得到號碼6作爲組比賽。

+1

'*車輪。*?(\ d *)x' –

+0

@PavneetSingh,工作,但你能解釋我的錯誤和格式作爲答案,所以我可以接受它在哪裏。 – Src

+0

只是爲了澄清,你想從字符串中選擇「輪子」,而不是別的? –

回答

2

你需要讓你的正則表達式非貪婪,因爲.*會消耗你的數字和\d*代表0或不匹配

.*Wheels.*?(\d*)x 

.*?意味着匹配儘可能多的字符數的時間儘可能停止.*消耗你的數字

Follow this Demo for example


一lternately你可以使它更有效率,如果有Wheel後沒有數字,並根據客戶所需的值的正則表達式

.*Wheels[^\d]*(\d*)x

其中[^\d]*平均匹配除數字什麼

+1

謝謝你的解釋! – Src

+0

@Src我很高興我能幫上忙,編碼愉快 –

3

你需要的數字lazy instead of greedy之前你.*進行:

/.*Wheels.*?(\d*)x/ 

.*會貪婪地佔用了一切的x,留下任何以下\d*。由於*可以有效匹配零個字符,因此\d*的空匹配不是錯誤的結果。

通過添加?做一個懶惰.*?表達,它會嘗試匹配儘可能少的字符越好,允許以下\d*x之前的所有號碼匹配。

+0

謝謝你的解釋! – Src