| View previous topic :: View next topic |
| Author |
Message |
F-rit
Joined: 11 Feb 2013 Posts: 2
|
Posted: Mon Feb 11, 2013 8:51 am Post subject: Работа с числами |
|
|
Подскажите пжлст, может уже где-то было обсуждение и есть решение.
Приходится работать с большими объемами текста. И очень актуален вопрос обнаружения чисел дробленых точкой xxx.xxx
Надо их все обнаружить и точку перевернуть в запятую. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 724 Location: Kyiv, Ukraine
|
Posted: Mon Feb 11, 2013 9:47 am Post subject: Re: Работа с числами |
|
|
Нужно использовать регулярные выражения.
Регулярные выражения описаны в справке AkelPad, как это ни парадоксально для пользователей, туда не заглядывающих. Эта справка говорит нам:
| Code: | . любой символ
[a-z] диапазон символов |
Поскольку . означает любой символ, а мы хотим найти конкретно точку, в регулярном выражении следует использовать "заэкранированную" точку: \.
Поскольку [a-z] означает диапазон символов, а мы хотим искать только цифры, указываем диапазон [0-9]
Итого, выражение вида ЦифраТочкаЦифра выглядит так: [0-9]\.[0-9]
Далее, мы хотим заменить выражение ЦифраТочкаЦифра на ЦифраЗапятаяЦифра. Для такой замены нам нужно временно выделить (запомнить) цифры до и после точки, чтобы они могли участвовать в замене. Что говорит нам справка?
| Code: | | (pattern) под-выражение, совпадаюшее с pattern и подхватывающее это совпадение |
Как мы уже выяснили, с цифрой совпадает выражение [0-9]. Теперь, если мы возмём его в скобки, то как раз получим под-выражение, совпадающее с цифрой и подхватывающее эту цифру. Таким образом, регулярное выражение для поиска становится таким: ([0-9])\.([0-9])
Для замены используем \1,\2
Здесь \1 ссылается на содержимое первой скобки, \2 - второй. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1432
|
Posted: Mon Feb 11, 2013 9:54 am Post subject: |
|
|
F-rit
Примерно так: http://akelpad.sourceforge.net/forum/viewtopic.php?p=21224#21224, но там баг какой-то странный.
Ну, или через SearchReplace.js
Что: ((?:^|[^\d\.])\d+)\.(\d+(?=[^\d\.]|$))
Чем: $1,$2
(то же самое, но в замене $ вместо \)
DV
А я зато баг обнаружил, тоже польза.  |
|
| Back to top |
|
 |
F-rit
Joined: 11 Feb 2013 Posts: 2
|
Posted: Mon Feb 11, 2013 10:00 am Post subject: |
|
|
| Спасибо за разъяснения. В области программирования, я продвинулся не далее элементарного html. Толкования на Русском языке оказались не лишними. |
|
| Back to top |
|
 |
bayzhanov
Joined: 12 May 2013 Posts: 2
|
Posted: Sun May 12, 2013 5:47 pm Post subject: |
|
|
| Может это баг: при использовании положительного просмотра назад в регулярном выражении (?<=Z)(\d+\.\d+) не заменяет что бы не указывал бы в поле заменить чем |
|
| Back to top |
|
 |
opk44
Joined: 16 Jan 2010 Posts: 189
|
Posted: Mon May 13, 2013 7:14 pm Post subject: |
|
|
bayzhanov
1. Сообщения о багах размещаются в отдельной ветке, а не тиражируются по нескольким темам. Если же Вы сами не можете определиться, считать то или иное поведение багом или нет, то Ваше сообщение может быть просто проигнорировано.
2. Предположительно такое поведение описывается в документации как "...Соответствие не сохраняется для последующего использования..."
3. Факт, что замена работает в варианте использования "Заменить всё". |
|
| Back to top |
|
 |
|