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

Ответить
Аватара пользователя
XXXp

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

Сообщение XXXp »

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

Re: Любой язык - Обработка текстового файла

Сообщение Foreigner »

XXXp, Приблизительно так на повершелл:



Код:

Код: Выделить всё

$a = @"
Test? Test! У меня такой вопрос, есть ли возможность сделать скрипт, который бы из большого объема текста выбирал бы только целые полноценные предложения, начинающиеся с заглавной буквы и заканчивающиеся точкой. При этом чтобы слова типа г. Москва и знаки препинания (троеточие на пример - ... ) за таковые не считались, т.е. есть некий список стоп слов, наличие которых в предложении исключает их. Скажите в каком направлении копать?
"@
$a = $a -replace '([^\.\s]{2,})(\.|\?|!)(\s|$)?','$1$2' -split ''
$a | foreach { $_; '-' * 5 }
Аватара пользователя
XXXp

Re: Любой язык - Обработка текстового файла

Сообщение XXXp »

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

Re: Любой язык - Обработка текстового файла

Сообщение Iska »

Цитата XXXp:



Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие?
Любой язык - Обработка текстового файла




"\.\.\." или "\.{3,}"
Аватара пользователя
Iska

Re: Любой язык - Обработка текстового файла

Сообщение Iska »

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



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

Re: Любой язык - Обработка текстового файла

Сообщение Foreigner »

Iska,
Цитата Iska:



Это ж три точки получается, а не троеточие…
Любой язык - Обработка текстового файла




Не подумал, что есть такой символ. Regex, как темная книга. Все на ощупь. Наверное там должны быть дополнительные ограничители, пробел или конец строки или еще что-то. Например (posh):



Код:

Код: Выделить всё

'...' -match '\.{3}' # true
'....' -match '\.{3}' # true
'...' -match '^\.{3}$' # true
'....' -match '^\.{3}$' #' false

Да, походу запятая не нужна, но это не решает проблему точек 3+ (если троеточие не одним символом)
Аватара пользователя
XXXp

Re: Любой язык - Обработка текстового файла

Сообщение XXXp »

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

Re: Любой язык - Обработка текстового файла

Сообщение XXXp »

XXXp, Это бывает. Регулярные выражения не стандартизированы и разные воплощения их не всегда понимаются одинаково. Например sed не поймет "\d" (цифра), ему подавай [0-9]. Или:



Код:

Код: Выделить всё

echo 'abc' | sed 's/.*/\U&/' # ABC, строка заглавными
'abc' -replace '(.*)','\U$1'   # \Uabc\U  -- powershell
Ответить

Вернуться в «Скриптовые языки администрирования Windows»