2017-08-27 73 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