2016-09-04 3 views
1

Я хочу сопоставить определенные строки от начала до 5-го слова заголовка статьи.Регулярное выражение для строки соответствия в первых пяти словах входного предложения

Входная строка:

The 14 best US colleges in the West are dominated by California — here's who makes the cut. 

регулярное выражение:

/^.*(\bbest\b|\btop\b|\bhot\b).*$/ 

В настоящее время соответствует название целая статья, но хотите найти до "колледжей". , а также нужно игнорировать или не совпавшие строки, как ноутбук, хот-спота и т.д.

ответ

0

Вы можете использовать это выражение

^((?:\w+\s?){1,5}).* 

Объяснение:

^ позиции утверждают в начале строки

\w+ соответствует любому символу слова

\s? соответствует ни одному пробелу

{1,5} кванторных - от 1 до 5 раз, столько раз, сколько возможно

.* соответствует любому символу (кроме символа новой строки)

Это соответствует первые 5 слов (и пробелы) ,

+0

Как я могу игнорировать, чтобы соответствовать%, $ или любому специальному символу, а также длина числовой строки меньше 4. Необходимо игнорировать следующие типы senstense. 1. 3D-печать светодиодного матричного дисплея. 2. Победитель стипендии LIFT 2016 года Луис Камачо Кабальеро. 3. $ 15 - новая цена для мобильного покрытия. @manaR – santosh

+0

Я думаю, вы могли бы сначала сопоставить эти строки, исключить их из своего файла и затем выполнить обычное совпадение? – manaR

0
^(\w+\s){0,4}\b(best|top|hot)(\s|$) 

Вы хотите совместить строку в первых пяти словах ввода предложения. Тогда, если подсчитано с начала предложения, должно быть 0-4 слова перед словом, которое вы хотите сопоставить. Поэтому вам нужно указать ^(\w+\s){0,4} перед конкретными словами, которые вы хотите сопоставить. См. https://regex101.com/r/nS0dU6/4

+0

Спасибо, работает отлично, но я могу использовать + или любой другой оператор вместо запятой в {0,4}. – santosh

+0

@santosh Я не совсем понимаю, что вы подразумеваете под «использовать + или любой другой оператор вместо запятой в {0,4}». – ltux

0

regex101 вновь приходит на помощь.

^(?=(?:\w+\s){0,4}?(?:best|top|hot)\b(?!-))(\w+(?:\s\w+){0,4})

  • (?=(?:\w+\s){0,4}?(?:best|top|hot)\b(?!-) проверяет, что ключевое слово в течение первых 5 (обратите внимание, что (?!-) добавляется для удовлетворения таких слов, как hot-spot)
  • (\w+(?:\s\w+){0,4}) затем сопоставляет первый максимум 5 слов
+0

Спасибо, работает отлично, но я могу использовать + или любой другой оператор вместо запятой в {0,4}. – santosh

+0

Я так не думаю. Зачем? –

+0

Как я могу игнорировать, чтобы сопоставить%, $ или любой специальный символ, а также длину числовой строки меньше 4. Необходимо игнорировать следующие типы senstense. 1.3D Печать светодиодного матричного дисплея. 2. 2016 Победитель стипендии LiFT Луис Камачо Кабальеро. 3. $ 15 - новый приз для мобильного покрытия. – santosh