Вот мой вводимый текст:

Intel Core i3-4170 3,7 ГГц

Я пытаюсь заменить 3.7GHz на XXX

Вот мой шаблон:

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

Но это соответствует: i3-4170 3.7GHz

Если я добавлю флаг global , я получу то, что мне нужно во 2-й группе, но я не уверен, что это надежно.

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

0
Cornwell 27 Авг 2017 в 20:55

3 ответа

Лучший ответ

Вы можете использовать регулярное выражение

\b[^\s]*GHz\b

См. демонстрационную версию regex 101

1
marvel308 27 Авг 2017 в 17:59

Другой способ может быть более конкретным:

/[\d.]*\dGHz/g

[Regex Demo]

0
shA.t 27 Авг 2017 в 18:34

Мой ответ:

\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 
  • Флаги: г, я
  • Шаги: 91

демонстрация

0
linden2015 27 Авг 2017 в 18:17