Вопрос Удалить номера в середине строки


Я хочу удалить лишние десятичные числа из строки, используя find / replace с регулярным выражением.

Например :

<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>

Должно выглядеть так:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

Самое дальнее, что я получил, - это выражение

(\.\d{3,12})

Любая помощь будет оценена.


4
2017-08-30 20:16


происхождения




ответы:


  • Ctrl+ЧАС
  • Найти то, что: (?<=\d\.\d\d)\d+     ИЛИ \d\.\d\d\K\d+
  • Заменить: LEAVE EMPTY 
  • Заменить все

Объяснение:

(?<=        : start lookbehind, make sure we have 
  \d\.\d\d  : a digit, a dot and 2 digits
)           : end lookbehind
\d+         : 1 or more digits

другая альтернатива:

\d\.\d\d    : a digit, a dot and 2 digits
\K          : forget what we have seen until this point
\d+         : 1 or more digits
  • Проверить регулярное выражение

Результат для данного примера:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

2
2017-08-31 08:36





Я хочу удалить лишние десятичные числа из строки, используя find / replace с регулярным выражением.

  • Меню «Поиск»> «Заменить» (или Ctrl+ЧАС)

  • Установите «Найти, что», чтобы (\d+\.\d\d).*<,

  • Установите «Заменить с» на \1<

  • Включить «Регулярное выражение» и «Соответствует новой строке»

  • Нажмите «Заменить все»

    Image

До:

<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>

После:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

дальнейшее чтение


2
2017-08-30 20:41



.* является жадным и может вызвать некоторые проблемы, когда два тега в строке. - Toto
Мое редактирование было отклонено, я не знаю, почему, вы скопировали оригинал в «после», а не в результате. - Toto
@Toto К сожалению. Исправлена. Благодарю. - DavidPostill♦