Требуется шаблон проверки регулярных выражений - PullRequest
0 голосов
/ 31 марта 2020

Может ли кто-нибудь здесь рассказать мне о создании этого шаблона проверки?

все предложения начинаются с заглавной буквы, сообщение заканчивается полной остановкой. нет орфографических ошибок.

1 Ответ

1 голос
/ 08 апреля 2020

Этот подход может быть не совсем надежным для грязных данных, вводимых из Интернета, поскольку вы, вероятно, найдете множество примеров текста, который не соответствует вашим строгим правилам. У вас есть иностранные письма в вашем сообщении. Но вот некоторый базовый c код:

Разделение текста на предложения (с использованием утверждения lookbehind):

message = "A test. Not what I wanted."
sentences = message.split(/(?<=\.)\s*/)
                   .map(sentence => sentence.trim())
                   .filter(sentence => sentence)
;
// sentences = ["A test.", "Not what I wanted."]

Все предложения начинаются с заглавной буквы (плюс необязательный пробел). Если в предложении пропущен период, этот токенизатор будет обрабатывать оба предложения как одно.

is_all_capital = sentences
                 .map(sentence => sentence.match(/^\s*[A-Z]/))
                 .every(str => !!str)  // cast to boolean
;

Сообщение заканчивается точкой (плюс необязательный пробел)

is_end_period = !!message.match(/\.\s*$/);

Нет орфографические ошибки.

ПРИМЕЧАНИЕ. Это, вероятно, сломается, потому что ваш словарь неполон, ваш текстовый корпус содержит дефисные слова, не содержит апострофов или токенизатор портит специальные символы или слова с числами.

dictionary = fs.readFileSync('dictionary.txt')
               .toLowerCase()
               .split('\n')
               .reduce((store,x) => ({ ...store, [str]: true }), {})
;
message_tokens = [ ...message.toLowerCase().matchAll(/[a-z]([\w-']*\w)*/g) ]
                 .filter(match => !!match)  
                 .map(match => match[0] )
;
// message_tokens = ["a", "test", "not", "what", "i", "wanted"]

is_spellchecked = message_tokens.every(token => !!dictionary[str])

Если вы серьезно относитесь к проверке орфографии, возможно, вы захотите исследовать конкретные c библиотеки проверки орфографии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...