2017-08-27 72 views
0

這裏是我的輸入文本:正則表達式:無法做負lookahed

英特爾酷睿i3-4170 3.7GHz的

我試圖用XXX

更換3.7GHz這裏是我的模式:

/\s(?=[^\s]+(.*?GHz)$)/

但這種匹配:i3-4170 3.7GHz

如果我添加了全球標誌我得到了我需要在第二組,但我不知道這是可靠的。

https://regex101.com/r/ARa1tG/1

+0

你能提供輸入文本的另一個例子,因爲我不知道你爲什麼要用這樣一個複雜的正則表達式就像這樣一個簡單的模式匹配。 \ d + \。\ d + GHz這個正則表達式也可以完成這個例子的作業 –

回答

1

你可以使用正則表達式

\b[^\s]*GHz\b 

看到regex 101 demo

+0

簡單:'[^] * GHz' –

+0

您正在捕獲'ghz'。請參閱:https://regex101.com/r/tfh3zd/1 – linden2015

+0

更簡單:'\ S * GHz' - 第二個'\ b'可能很有用,但第一個不會做任何事情。 – pguardiario

0

另一種方式可以是 - 更具體的 - :

/[\d.]*\dGHz/g 

[Regex Demo]

+0

你在捕捉'.ghz'和'3ghododiac'。 https://regex101.com/r/plKEJy/1 – linden2015

+0

@ linden2015謝謝修復;)。 –

0

我的回答:

\b\d+(?:\.\d+)?ghz\b

\b // word boundary 
\d+ // 1 or more digits 
(?: // optional group (not captured) 
\.\d+ // a dot, then 1 or more digits 
)? // end of group 
ghz // literal 
\b // word boundary 
  • 標誌:G,I
  • 步驟:91

Demo