这里是我的输入文本:正则表达式:无法做负lookahed
英特尔酷睿i3-4170 3.7GHz的
我试图用XXX
更换3.7GHz
这里是我的模式:
/\s(?=[^\s]+(.*?GHz)$)/
但这种匹配:i3-4170 3.7GHz
如果我添加了全球标志我得到了我需要在第二组,但我不知道这是可靠的。
https://regex101.com/r/ARa1tG/1
这里是我的输入文本:正则表达式:无法做负lookahed
英特尔酷睿i3-4170 3.7GHz的
我试图用XXX
更换3.7GHz
这里是我的模式:
/\s(?=[^\s]+(.*?GHz)$)/
但这种匹配:i3-4170 3.7GHz
如果我添加了全球标志我得到了我需要在第二组,但我不知道这是可靠的。
https://regex101.com/r/ARa1tG/1
简单:'[^] * GHz' –
您正在捕获'ghz'。请参阅:https://regex101.com/r/tfh3zd/1 – linden2015
更简单:'\ S * GHz' - 第二个'\ b'可能很有用,但第一个不会做任何事情。 – pguardiario
你在捕捉'.ghz'和'3ghododiac'。 https://regex101.com/r/plKEJy/1 – linden2015
@ linden2015谢谢修复;)。 –
我的回答:
\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
你能提供输入文本的另一个例子,因为我不知道你为什么要用这样一个复杂的正则表达式就像这样一个简单的模式匹配。 \ d + \。\ d + GHz这个正则表达式也可以完成这个例子的作业 –