Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Обработка текстового файла

Ответить
Настройки темы
Любой язык - Обработка текстового файла

Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня такой вопрос, есть ли возможность сделать скрипт, который бы из большого объема текста выбирал бы только целые полноценные предложения, начинающиеся с заглавной буквы и заканчивающиеся точкой. При этом чтобы слова типа г. Москва и знаки препинания (троеточие на пример - ... ) за таковые не считались, т.е. есть некий список стоп слов, наличие которых в предложении исключает их. Скажите в каком направлении копать?

Отправлено: 15:47, 17-01-2015

 

Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


XXXp, Приблизительно так на повершелл:
Код: Выделить весь код
$a = @"
Test? Test! У меня такой вопрос, есть ли возможность сделать скрипт, который бы из большого объема текста выбирал бы только целые полноценные предложения, начинающиеся с заглавной буквы и заканчивающиеся точкой. При этом чтобы слова типа г. Москва и знаки препинания (троеточие на пример - ... ) за таковые не считались, т.е. есть некий список стоп слов, наличие которых в предложении исключает их. Скажите в каком направлении копать?
"@

$a = $a -replace '([^\.\s]{2,})(\.|\?|!)(\s|$)?','$1$2<split>' -split '<split>'

$a | foreach { $_; '-' * 5 }

Последний раз редактировалось Foreigner, 17-01-2015 в 18:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:39, 17-01-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие?

Отправлено: 14:03, 19-01-2015 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Вы не можете ввести троеточие?

Отправлено: 14:39, 19-01-2015 | #4


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата XXXp:
Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие? »
"\.\.\." или "\.{3,}"
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:15, 19-01-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Вот и верь после этого людям . Это ж три точки получается, а не троеточие…

Foreigner, а зачем запятая после «3»? Чтобы пропускать возможные последующие точки? Это ведь тогда уже будет не «троеточие», а «четверо-», «пяти-» и прочее «многоточие».

Последний раз редактировалось Iska, 19-01-2015 в 17:13. Причина: Исправлена описка

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:22, 19-01-2015 | #6


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Iska,
Цитата Iska:
Это ж три точки получается, а не троеточие… »
Не подумал, что есть такой символ. Regex, как темная книга. Все на ощупь. Наверное там должны быть дополнительные ограничители, пробел или конец строки или еще что-то. Например (posh):
Код: Выделить весь код
'...' -match '\.{3}' # true
'....' -match '\.{3}' # true

'...' -match '^\.{3}$' # true
'....' -match '^\.{3}$' #' false
Да, походу запятая не нужна, но это не решает проблему точек 3+ (если троеточие не одним символом)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:24, 19-01-2015 | #7


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


В том то и дело, не находит, нотпад++ находит по регулярке \.\.\., а программа regexfilter нет, она разбивает текст на предложения и удаляет все, которые подходят под ругулярку. Все работает нормально, а с троеточием засада

Отправлено: 17:25, 19-01-2015 | #8


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


XXXp, Это бывает. Регулярные выражения не стандартизированы и разные воплощения их не всегда понимаются одинаково. Например sed не поймет "\d" (цифра), ему подавай [0-9]. Или:
Код: Выделить весь код
echo 'abc' | sed 's/.*/\U&/' # ABC, строка заглавными
'abc' -replace '(.*)','\U$1'   # \Uabc\U  -- powershell
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:40, 19-01-2015 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Обработка текстового файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла icomboy Скриптовые языки администрирования Windows 0 10-09-2013 15:17
CMD/BAT - обработка текстового\xml файла firstarey Скриптовые языки администрирования Windows 1 14-05-2012 07:03
CMD/BAT - [решено] Обработка текстового лога GOLDLION Скриптовые языки администрирования Windows 10 02-06-2011 17:05
MSFT SQL Server - результаты запроса в виде текстового файла и его обработка minusodin Программирование и базы данных 7 30-03-2010 15:48
Получение и обработка информации из текстового файла ya158 AutoIt 3 11-09-2009 01:24




 
Переход