Что нового

[RegExp] Удаление в начале и конце пробелов,цифр и кавычек

ZloePelme666ko

Новичок
Сообщения
18
Репутация
1
День добрый, есть такая проблема.
Прогружаю в sqlite базу значения, есть столбец с пользователями. Данные приходят отчетными файлами, некоторые пользователи при вводе своих имен копипастят их из каких то документов вместе с цифровым кодом (например 21 Глушко А.В.). При этом частенько они начинают писать в формате " 21 Глушко А.В. " (С пробелами и/или кавычками в начале/конце). Кавычки при прогрузке в sqlite выдают ошибку (зарезервированный символ) и их использовать нельзя, остальное - просто облегчение базы(в базе порядка 2,5 млн записей и один такой символ в каждой строке делает базу тяжелее на 100мб).
В общем есть такой список вариаций:

Код:
21 Глушко А.В
   21 Глушко А.В
21 Глушко А.В   
   21 Глушко А.В   
"21 Глушко А.В"
"    21 Глушко А.В   "
"    21 Глушко А.В"
"21 Глушко А.В      "
Глушко А.В
   Глушко А.В
Глушко А.В   
   Глушко А.В   
"Глушко А.В"
"    Глушко А.В   "
"    Глушко А.В"
"Глушко А.В      "
В результате надо иметь просто Глушко А.В.

Можно ли сделать это одной регуляркой? И если да, то как? Я уже всю голову сломал
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
^[" \d]+|[" \d]+$
Код:
StringRegExpReplace(текст,'^[" \d]+|[" \d]+$','')
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$text=FileRead("glusko.txt")
$sPattern = '(?m)^([^А-Яа-яЁё]*)(.*?\..)(.*?$)'
$aResult = StringRegExpReplace($text, $sPattern, "$2")
MsgBox(0,"найдено "&@extended,$aResult)
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
StringRegExpReplace($txt, '.*?([^" \d]+ .\..).*', '$1')
StringRegExpReplace($txt, '[" \d]*(.+ .\..).*', '$1')
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Мой вариант:
Код:
ConsoleWrite(StringRegExpReplace(FileRead('list.txt'), '.*?(.*?([а-яА-ЯЁё]+\s[а-яА-ЯЁё\.]+)?+)?', '$1'))
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вариант :
Код:
$sText = "21 Глушко А.В"  & @CRLF & _ 
"   21 Глушко А.В"  & @CRLF & _ 
"21 Глушко А.В   "  & @CRLF & _ 
"   21 Глушко А.В   "  & @CRLF & _ 
"'21 Глушко А.В'"  & @CRLF & _ 
"'    21 Глушко А.В   '"  & @CRLF & _ 
"'    21 Глушко А.В'"  & @CRLF & _ 
"'21 Глушко А.В      '"  & @CRLF & _ 
"Глушко А.В"  & @CRLF & _ 
"   Глушко А.В"  & @CRLF & _ 
"Глушко А.В   "  & @CRLF & _ 
"   Глушко А.В   "  & @CRLF & _ 
"'Глушко А.В'"  & @CRLF & _ 
"'    Глушко А.В   '"  & @CRLF & _ 
"'    Глушко А.В'"  & @CRLF & _ 
"'Глушко А.В      '"  & @CRLF & _ 
""

$sPatern = "(?m)^.*?([А-Яа-яЁё].+[А-Яа-яЁё]).*(\r\n)"
;$sResult = StringRegExpReplace( $sText, $sPatern, '\1\2' )
$sResult = StringRegExpReplace( $sText, $sPatern, '\1.\2' ) ;Добавлена точка в конце Инициалов
MsgBox(4096, ' Test Result', $sResult)




Добавлено:
Сообщение автоматически объединено:

Хотя строчные "а-я ё "можно и убрать, если это фамилии


Добавлено:
Сообщение автоматически объединено:

Наверное надо добавить точку :
Код:
$sResult = StringRegExpReplace( $sText, $sPatern, '\1.\2' )
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
До кучи. :smile:
Код:
$sText = "21 Глушко А.В" & @CRLF & _
		"   21 Глушко А.В" & @CRLF & _
		"21 Глушко А.В   " & @CRLF & _
		"   21 Глушко А.В   " & @CRLF & _
		"'21 Глушко А.В'" & @CRLF & _
		"'    21 Глушко А.В   '" & @CRLF & _
		"'    21 Глушко А.В'" & @CRLF & _
		"'21 Глушко А.В      '" & @CRLF & _
		"Глушко А.В" & @CRLF & _
		"   Глушко А.В" & @CRLF & _
		"Глушко А.В   " & @CRLF & _
		"   Глушко А.В   " & @CRLF & _
		"'Глушко А.В'" & @CRLF & _
		"'    Глушко А.В   '" & @CRLF & _
		"'    Глушко А.В'" & @CRLF & _
		"'Глушко А.В      '" & @CRLF & _
		""

$sResult = StringRegExpReplace($sText, '.*?([ЁёА-Яа-я]+)[^ЁёА-Яа-я]*([ЁА-Я]).*([ЁА-Я]).*', '${1} ${2}.${3}.')
ConsoleWrite($sResult & @LF)
 
Верх