Любой язык - Обработка текстового файла
-
XXXp
Любой язык - Обработка текстового файла
У меня такой вопрос, есть ли возможность сделать скрипт, который бы из большого объема текста выбирал бы только целые полноценные предложения, начинающиеся с заглавной буквы и заканчивающиеся точкой. При этом чтобы слова типа г. Москва и знаки препинания (троеточие на пример - ... ) за таковые не считались, т.е. есть некий список стоп слов, наличие которых в предложении исключает их. Скажите в каком направлении копать?
-
Foreigner
Re: Любой язык - Обработка текстового файла
XXXp, Приблизительно так на повершелл:
Код:
Код:
Код: Выделить всё
$a = @"
Test? Test! У меня такой вопрос, есть ли возможность сделать скрипт, который бы из большого объема текста выбирал бы только целые полноценные предложения, начинающиеся с заглавной буквы и заканчивающиеся точкой. При этом чтобы слова типа г. Москва и знаки препинания (троеточие на пример - ... ) за таковые не считались, т.е. есть некий список стоп слов, наличие которых в предложении исключает их. Скажите в каком направлении копать?
"@
$a = $a -replace '([^\.\s]{2,})(\.|\?|!)(\s|$)?','$1$2' -split ''
$a | foreach { $_; '-' * 5 }-
XXXp
Re: Любой язык - Обработка текстового файла
Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие?
-
Iska
Re: Любой язык - Обработка текстового файла
Цитата XXXp:
Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие?
"\.\.\." или "\.{3,}"
Подскажите пожалуйста еще, как с помощью регулярок regexp находить троеточие?
Любой язык - Обработка текстового файла
"\.\.\." или "\.{3,}"
-
Iska
Re: Любой язык - Обработка текстового файла
Вот и верь после этого людям
. Это ж три точки получается, а не троеточие…
Foreigner, а зачем запятая после «3»? Чтобы пропускать возможные последующие точки? Это ведь тогда уже будет не «троеточие», а «четверо-», «пяти-» и прочее «многоточие».
. Это ж три точки получается, а не троеточие…Foreigner, а зачем запятая после «3»? Чтобы пропускать возможные последующие точки? Это ведь тогда уже будет не «троеточие», а «четверо-», «пяти-» и прочее «многоточие».
-
Foreigner
Re: Любой язык - Обработка текстового файла
Iska,
Цитата Iska:
Это ж три точки получается, а не троеточие…
Не подумал, что есть такой символ. Regex, как темная книга. Все на ощупь. Наверное там должны быть дополнительные ограничители, пробел или конец строки или еще что-то. Например (posh):
Код:
Да, походу запятая не нужна, но это не решает проблему точек 3+ (если троеточие не одним символом)
Цитата Iska:
Это ж три точки получается, а не троеточие…
Любой язык - Обработка текстового файла
Не подумал, что есть такой символ. Regex, как темная книга. Все на ощупь. Наверное там должны быть дополнительные ограничители, пробел или конец строки или еще что-то. Например (posh):
Код:
Код: Выделить всё
'...' -match '\.{3}' # true
'....' -match '\.{3}' # true
'...' -match '^\.{3}$' # true
'....' -match '^\.{3}$' #' falseДа, походу запятая не нужна, но это не решает проблему точек 3+ (если троеточие не одним символом)
-
XXXp
Re: Любой язык - Обработка текстового файла
В том то и дело, не находит, нотпад++ находит по регулярке \.\.\., а программа regexfilter нет, она разбивает текст на предложения и удаляет все, которые подходят под ругулярку. Все работает нормально, а с троеточием засада
-
XXXp
Re: Любой язык - Обработка текстового файла
XXXp, Это бывает. Регулярные выражения не стандартизированы и разные воплощения их не всегда понимаются одинаково. Например sed не поймет "\d" (цифра), ему подавай [0-9]. Или:
Код:
Код:
Код: Выделить всё
echo 'abc' | sed 's/.*/\U&/' # ABC, строка заглавными
'abc' -replace '(.*)','\U$1' # \Uabc\U -- powershell