Сегодня выучили основы регулярных выражений и, приложив некоторые усилия, смогли собрать воедино то, что ПОЧТИ работает.
У меня есть документы из книги, где мне нужно найти статьи (a, an, the) в пулях, а не в прозе.
Образец пули:
· Lorem ipsum lorem (XXX) Lorem · Lorem ipsum · Lorem ipsum, lorem и
Образец прозы:
(Справа) Лорем написал ipsum . Lorem ipsum глагол ipsum.
Пока что это делает трюк более или менее:
$regexArticles = "^·\ [\w ,:;()+-=&·]*\b( the | a | an |The |An )\b.*$"
$articlecount = Select-String -Path $textfile -Pattern $regexArticles -AllMatches
"Article Count: " + $articlecount.Matches.Count
Чтобы сделать это немного более читабельным, я объясню свое мышление:
Если строка начинается с маркера и далее следует любое количество слов и символов: ",: () + - = &.;", Возьмите ее, если есть также статьи.
Проблема, это не захватывает строку для следующего случая:
· Lorem ipsum lorem (XXX) Lorem · Lorem the ipsum · Lorem ipsum, lorem и
Lorem Lorem Lorem Lorem
Как сохранить такую логику, когда строка, которую я хочу получить, содержит такие разрывы строк, как эта?
Если есть более простой способ, возможно, просто исключить все предложения, содержащие точку, это было бы замечательно (единственная проблема в том, что иногда эти маркеры неправильно содержат точки).
РЕДАКТИРОВАТЬ
Просто понял, что «почти» работает в моем возвышенном текстовом редакторе, на самом деле не работает в Powershell. По любой причине, даже если это возвращает совпадения в регулярном выражении с возвышенным текстом, это не для Powershell.
Теперь я знаю почему. В то время как возвышенный может обрабатывать символ пули, оболочка не может, поэтому он был опущен, и я не заметил. Теперь мне просто нужно знать, как правильно захватить пулю Unicode и передать ее таким же образом.