Страницы: 1
RSS
Убрать текст в скобках
 
Делаю каталог фильмов. Данные - с Киноэксперта. Нужно сократить колонку. Желательно с именами обойтись без словаря имен.

Может уже есть похожие решения?
==================================
 Было

Галина Беляева (...Джоанна Седвик), Александр Филиппенко (...будущий Ричард Глостер), Игорь Шавлак (...Дик Шелтон), Владимир Литвинов, Владимир Разумовский, Дмитрий Герасимов, Александр Кудинов, Николай Дупак, Юрий Смирнов, Дмитрий Орловский (...Картер), Сергей Тарасов, Яна Друзь, Леонид Кулагин, Альгимантас Масюлис, Борис Химичев (...Джон Мщу-за-всех), Борис Хмельницкий.

Стало

Г.Беляева, А.Филиппенко, И.Шавлак, В.Литвинов, В.Разумовский, Д.Герасимов, А.Кудинов, Н.Дупак, Ю.Смирнов, Д.Орловский, С.Тарасов, Я.Друзь, Л.Кулагин, А.Масюлис, Б.Химичев, Б.Хмельницкий

 
Изменено: cammus - 08.03.2019 16:48:33
 
Word
ctrl+H
ищем \(*\)
меняем на ничего
заменить все.
наслаждаемся
По вопросам из тем форума, личку не читаю.
 
Огромное спасибо, а в Excel макрос на всю колонку?
 
Цитата
БМВ написал:
наслаждаемся
Привет, Михаил.
А имена усекать кто будет?
Версия регулярными выражениями (Udf-функция)
Код
Public Function getShortest(ByVal text As String) As String
    Dim pReg As Object
    Set pReg = CreateObject("VBScript.RegExp")
    pReg.Global = True
    pReg.Pattern = " \(.+?\)"
    text = pReg.Replace(text, "")
    pReg.Pattern = "([А-ЯЁ])[а-яё]+(?= )"
    getShortest = pReg.Replace(text, "$1.")
End Function
 
В Ворде первая замена как написал БМВ, только впереди пробел, и Больше - Подстановочные знаки.
Вторая замена для сокращения имен (, ?)[! ]{1;} на \1.
Первое имя сократите вручную.
Изменено: Казанский - 08.03.2019 17:05:17
 
Спасибо!
Вечером все опробую
 
Цитата
Андрей VG написал:
А имена усекать кто будет?
Цитата
cammus написал:
Убрать текст в скобках
хто сказал что кого-то надо высечь? :-)
Изменено: БМВ - 08.03.2019 17:15:47
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
хто сказал что кого-то надо высечь
То была дополнительная загадка, сравни условие и результат - найди то, чего не хватает. Просто рука бойца писать устала :)
Скоро Z на форум подтянутся, те говорят более 8 секунд ни на чём сосредоточится не могут. Тогда загадки будут интереснее.
 
Цитата
Казанский написал:
Больше - Подстановочные знаки.
про галку - согласен, а вот пробел - не понял, зачем?

А по поводу (, ?)[! ]{1;} на \1. - каждый раз дивлюсь почему это отсутствует в Excel
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
пробел - не понял, зачем?
Чтобы пробел перед запятой не оставался. Ну или еще одна замена: пробел запятая на запятая.
 
Цитата
Казанский написал:
Чтобы пробел перед запятой не оставался.
, ну да. Тут правда есть опасность, что его может не быть по случайности, но усложнять смысла нет.
По вопросам из тем форума, личку не читаю.
 
Опробовал...
Автор поста уверяет откликнувшихся в величайшем к ним уважении...

Никогда не пользовался таким способом.
Подскажите великодушно, где бы поподробнее ознакомится с сим способом.  
 
Можно ещё добавить в конце функции 2 строчки:
Код
    pReg.Pattern = "[.] "
    getShortest = pReg.Replace(getShortest, ".")

Останется еще точку в конце текста убрать ;)
Изменено: ZVI - 08.03.2019 23:41:15
 
cammus, Вам предложено было 2 разных , но тем не менее близких по сути варианта, так как все используют маски поиска и подстановки.
Что касается Word ,  так как пользоваться приходится не часто, то под рукой держу эту памятку Как нистранно, никогда не натыкался на что-то подобное в описаниях MS, может не сильно искал.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
под рукой держу  эту памятку
Большое спасибо!
Проштудирую.
 
Цитата
Андрей VG написал:
Replace(text, "$1.")
Меняем на первую букву и точку
Подскажите пожалуйста, что это за синтаксис
$1
Насколько я понял, это подстановка строк?
Если не трудно, чуть подробнее об этих подстановках или ссылку.
 
Цитата
cammus написал:
или ссылку.
Пожалуйста, http://www.script-coding.com/WSH/RegExp.html
 
Цитата
Андрей VG написал:
Пожалуйста,  http://www.script-coding.com/WSH/RegExp.html
К сожалению по ссылке ничего не нашел. Там только 4 вхождения $
      2.4. Multiline
      Замечание: чтение и запись. Влияет на работу метасимволов ^ и $.
     4. Метасимволы
    objRegExp.Pattern = "^[A-Z]:\\$"
    $     Определяет конец входной строки.
   objRegExp.Pattern = "абв$"

Как я понял в паттерне,
pReg.Pattern = "([А-ЯЁ])[а-яё]+(?= )"
Галина_
Г это группа ([А-ЯЁ])
алина это диапазон с квантором [а-яё]+
пробел это группа (?= )  То есть, до пробела. Кстати, где этот синтаксис расписан?

Ну, а дальше
Replace(text, "$1.")
К первой группе (прописная буква) добавляется точка.

А если
pReg.Pattern = "([А-ЯЁ])[а-яё]+(?= )"
заменить на
pReg.Pattern = "([А-ЯЁ])[а-яё]+(?= ) "
то пропадет пробел между точкой и фамилией, что равносильно указанному выше коду

   pReg.Pattern = "[.] "
   getShortest = pReg.Replace(getShortest, ".")
 
Цитата
cammus написал:
пробел это группа (?= )
Расписано там же (?=шаблон). Это шаблон с возвратом. То есть проверяется заканчивается ли предыдущий текст таким значением. Группа "заканчивается ли" не входит в результат отбора, поэтому пробел и не попадает под изменения.
Цитата
cammus написал:
К первой группе (прописная буква) добавляется точка.
Не совсем верно - всё найденное по шаблону заменяется на значение первой группы и точку.
 
Андрей, низкий поклон за науку!
Раньше даже не подозревал о возможностях регулярки.
Страницы: 1
Наверх