Работа с числами

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 2
Joined: Mon Feb 11, 2013 8:44 am

Работа с числами

Post by F-rit »

Подскажите пжлст, может уже где-то было обсуждение и есть решение.
Приходится работать с большими объемами текста. И очень актуален вопрос обнаружения чисел дробленых точкой xxx.xxx
Надо их все обнаружить и точку перевернуть в запятую.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Работа с числами

Post by DV »

Нужно использовать регулярные выражения.
Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих. Эта справка говорит нам:

Code: Select all

.     любой символ
[a-z] диапазон символов
Поскольку . означает любой символ, а мы хотим найти конкретно точку, в регулярном выражении следует использовать "заэкранированную" точку: \.
Поскольку [a-z] означает диапазон символов, а мы хотим искать только цифры, указываем диапазон [0-9]
Итого, выражение вида ЦифраТочкаЦифра выглядит так: [0-9]\.[0-9]
Далее, мы хотим заменить выражение ЦифраТочкаЦифра на ЦифраЗапятаяЦифра. Для такой замены нам нужно временно выделить (запомнить) цифры до и после точки, чтобы они могли участвовать в замене. Что говорит нам справка?

Code: Select all

(pattern) под-выражение, совпадаюшее с pattern и подхватывающее это совпадение
Как мы уже выяснили, с цифрой совпадает выражение [0-9]. Теперь, если мы возмём его в скобки, то как раз получим под-выражение, совпадающее с цифрой и подхватывающее эту цифру. Таким образом, регулярное выражение для поиска становится таким: ([0-9])\.([0-9])
Для замены используем \1,\2
Здесь \1 ссылается на содержимое первой скобки, \2 - второй.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

F-rit
Примерно так: viewtopic.php?p=21224#p21224, но там баг какой-то странный.

Ну, или через SearchReplace.js
Что: ((?:^|[^\d\.])\d+)\.(\d+(?=[^\d\.]|$))
Чем: $1,$2

(то же самое, но в замене $ вместо \)


DV
А я зато баг обнаружил, тоже польза. :D

Offline
Posts: 2
Joined: Mon Feb 11, 2013 8:44 am

Post by F-rit »

Спасибо за разъяснения. В области программирования, я продвинулся не далее элементарного html. Толкования на Русском языке оказались не лишними.

Offline
Posts: 4
Joined: Sun May 12, 2013 8:56 am

Post by bayzhanov »

Может это баг: при использовании положительного просмотра назад в регулярном выражении (?<=Z)(\d+\.\d+) не заменяет что бы не указывал бы в поле заменить чем

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

bayzhanov
1. Сообщения о багах размещаются в отдельной ветке, а не тиражируются по нескольким темам. Если же Вы сами не можете определиться, считать то или иное поведение багом или нет, то Ваше сообщение может быть просто проигнорировано.
2. Предположительно такое поведение описывается в документации как "...Соответствие не сохраняется для последующего использования..."
3. Факт, что замена работает в варианте использования "Заменить всё".

Offline
Posts: 3
Joined: Tue Jan 31, 2017 5:32 pm

Re: Работа с числами

Post by xzQbCJfH »

DV wrote:Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих.
Не парадоксально, когда, например, корректор, профессионально работающий с текстами, для упрощения своей работы-таки заглядывает в справку AkelPad, видит там "сверхжадные" и "нежадные" "квантификаторы", "обратные ссылки" (не имеющие отношения к гиперссылкам), "суррогатные пары" (не относящиеся к супружеству), "длину ровно две цифры" (покажите мне дробное количество цифр), "любые символы, которые являются разделителями"... — заглядывает, закрывает, и отправляется на форум. А на форуме, в лучших традициях фидонета, ему демонстративно выражают презрение его уровнем технической подготовленности. Подразумевая, что "если не можешь осилить эту область знаний, мы тебя сюда не звали, но и проигнорировать твой вопрос без высокомерной прокачки самооценки не можем".

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Работа с числами

Post by DV »

xzQbCJfH,

Сверхжадные квантификаторы:
https://www.google.com/search?q=%D1%81% ... 1%80%D1%8B

Обратные ссылки:
https://www.google.com/search?q=%D1%80% ... 0%BA%D0%B8

Суррогатные пары:
https://www.google.com/search?client=fi ... 0%BE%D0%B4

По символам-разделителям, действительно, сложно найти что-то стоящее.
Однако тут всё просто: символы-разделители - это в первую очередь знаки препинания и пробелы (в том числе символ табуляции, новая строка и т.п.). Также к символам-разделителям можно отнести знаки математических операций и прочие специальные символы, не являющиеся буквой или цифрой.
Post Reply