Подскажите пжлст, может уже где-то было обсуждение и есть решение.
Приходится работать с большими объемами текста. И очень актуален вопрос обнаружения чисел дробленых точкой xxx.xxx
Надо их все обнаружить и точку перевернуть в запятую.
Работа с числами
- Author
- Message
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Re: Работа с числами
Нужно использовать регулярные выражения.
Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих. Эта справка говорит нам:
Поскольку . означает любой символ, а мы хотим найти конкретно точку, в регулярном выражении следует использовать "заэкранированную" точку: \.
Поскольку [a-z] означает диапазон символов, а мы хотим искать только цифры, указываем диапазон [0-9]
Итого, выражение вида ЦифраТочкаЦифра выглядит так: [0-9]\.[0-9]
Далее, мы хотим заменить выражение ЦифраТочкаЦифра на ЦифраЗапятаяЦифра. Для такой замены нам нужно временно выделить (запомнить) цифры до и после точки, чтобы они могли участвовать в замене. Что говорит нам справка?
Как мы уже выяснили, с цифрой совпадает выражение [0-9]. Теперь, если мы возмём его в скобки, то как раз получим под-выражение, совпадающее с цифрой и подхватывающее эту цифру. Таким образом, регулярное выражение для поиска становится таким: ([0-9])\.([0-9])
Для замены используем \1,\2
Здесь \1 ссылается на содержимое первой скобки, \2 - второй.
Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих. Эта справка говорит нам:
Code: Select all
. любой символ
[a-z] диапазон символов
Поскольку [a-z] означает диапазон символов, а мы хотим искать только цифры, указываем диапазон [0-9]
Итого, выражение вида ЦифраТочкаЦифра выглядит так: [0-9]\.[0-9]
Далее, мы хотим заменить выражение ЦифраТочкаЦифра на ЦифраЗапятаяЦифра. Для такой замены нам нужно временно выделить (запомнить) цифры до и после точки, чтобы они могли участвовать в замене. Что говорит нам справка?
Code: Select all
(pattern) под-выражение, совпадаюшее с pattern и подхватывающее это совпадение
Для замены используем \1,\2
Здесь \1 ссылается на содержимое первой скобки, \2 - второй.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
F-rit
Примерно так: viewtopic.php?p=21224#p21224, но там баг какой-то странный.
Ну, или через SearchReplace.js
Что: ((?:^|[^\d\.])\d+)\.(\d+(?=[^\d\.]|$))
Чем: $1,$2
(то же самое, но в замене $ вместо \)
DV
А я зато баг обнаружил, тоже польза.
Примерно так: viewtopic.php?p=21224#p21224, но там баг какой-то странный.
Ну, или через SearchReplace.js
Что: ((?:^|[^\d\.])\d+)\.(\d+(?=[^\d\.]|$))
Чем: $1,$2
(то же самое, но в замене $ вместо \)
DV
А я зато баг обнаружил, тоже польза.
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
bayzhanov
1. Сообщения о багах размещаются в отдельной ветке, а не тиражируются по нескольким темам. Если же Вы сами не можете определиться, считать то или иное поведение багом или нет, то Ваше сообщение может быть просто проигнорировано.
2. Предположительно такое поведение описывается в документации как "...Соответствие не сохраняется для последующего использования..."
3. Факт, что замена работает в варианте использования "Заменить всё".
1. Сообщения о багах размещаются в отдельной ветке, а не тиражируются по нескольким темам. Если же Вы сами не можете определиться, считать то или иное поведение багом или нет, то Ваше сообщение может быть просто проигнорировано.
2. Предположительно такое поведение описывается в документации как "...Соответствие не сохраняется для последующего использования..."
3. Факт, что замена работает в варианте использования "Заменить всё".
-
Offline
- Posts: 3
- Joined: Tue Jan 31, 2017 5:32 pm
Re: Работа с числами
Не парадоксально, когда, например, корректор, профессионально работающий с текстами, для упрощения своей работы-таки заглядывает в справку AkelPad, видит там "сверхжадные" и "нежадные" "квантификаторы", "обратные ссылки" (не имеющие отношения к гиперссылкам), "суррогатные пары" (не относящиеся к супружеству), "длину ровно две цифры" (покажите мне дробное количество цифр), "любые символы, которые являются разделителями"... — заглядывает, закрывает, и отправляется на форум. А на форуме, в лучших традициях фидонета, ему демонстративно выражают презрение его уровнем технической подготовленности. Подразумевая, что "если не можешь осилить эту область знаний, мы тебя сюда не звали, но и проигнорировать твой вопрос без высокомерной прокачки самооценки не можем".DV wrote:Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Re: Работа с числами
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
По символам-разделителям, действительно, сложно найти что-то стоящее.
Однако тут всё просто: символы-разделители - это в первую очередь знаки препинания и пробелы (в том числе символ табуляции, новая строка и т.п.). Также к символам-разделителям можно отнести знаки математических операций и прочие специальные символы, не являющиеся буквой или цифрой.
Сверхжадные квантификаторы:
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
По символам-разделителям, действительно, сложно найти что-то стоящее.
Однако тут всё просто: символы-разделители - это в первую очередь знаки препинания и пробелы (в том числе символ табуляции, новая строка и т.п.). Также к символам-разделителям можно отнести знаки математических операций и прочие специальные символы, не являющиеся буквой или цифрой.