Что нового

[RegExp] Шаблон для удаления точек из строки.

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Какой должен быть шаблон для StringRegExp, что бы можно было из строк убирать точки?
Например имеем строки: "133.455", "34.89", "3.14", "88.11.13"
А надо получить: "133455", "3489", "314", "881113"
Пробовал делать так:
Код:
#include <Array.au3>
$sText = '12.341.45.18'
$sPattern = '(\d(?:\d+)+)'
$aResult = StringRegExp($sText, $sPattern, 3)
_ArrayDisplay($aResult)

Но получается, что каждая группа цифр присваивается разным элементам массива, а хотелось бы сразу получить все цифры в первом индексе массива.
И если можно, то хотел бы услышать от экспертов принцип работы метасимвола "(?: )" (желательно на примерах). Вот что написано в справке, составленной Redline: "Групповой шаблон без захвата. Ничем не отличается от предыдущего "( )", но не сохраняется для дальнейшего вывода"
Как понять без захвата? И как понять не сохраняется для дальнейшего вывода?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: [RegExp] Составление шаблона

Попробуй так:
Код:
$String = '"133.455", "34.89", "3.14", "88.11.13"'
$Reg = StringRegExpReplace($String, '\.', '')
MsgBox(0, 'Test', $Reg)
 
Автор
G

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Re: [RegExp] Составление шаблона

Спасибо за быструю помощь, вариант со StringRegExpReplace работает исправно.
А вот как сделать с помощью StringRegExp? Или StringRegExp для этих целей не подходит, как я понимаю.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Re: [RegExp] Составление шаблона

Как писал Redline, так и надо понимать - то что находится внутри скобок с ?:, то не попадает под захват, т.е. этого не будет в итоговом массиве, пример:
Код:
#include <Array.au3>
$sText = '12.341.45.18'
$sPattern = '(?:\d+)(\.)'
;~ $sPattern = '(\d+)(\.)' ; а так попадут
$aResult = StringRegExp($sText, $sPattern, 3)
_ArrayDisplay($aResult)

Мы видим две группы, но одна без захвата - в вывод $aResult попадут только точки
Да ваш случай нельзя решить RegExpom - он не умеет исключать элементы внутри групп, даже если ставить эти элементы в группы без захвата. Сам с этим сталкивался
 

focus

Осваивающий
Сообщения
69
Репутация
20
Re: [RegExp] Составление шаблона

Попробуйте так
Код:
$sText = '12.341.45.18'

$sNew = StringReplace($sText, '.', '')
ConsoleWrite($sNew & @CRLF)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [RegExp] Составление шаблона

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[RegExp] Составление шаблона" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 
Верх