2017-02-07 8 views
0

я могу выбрать фразу из одного слова, используя это регулярное выражение:регулярное выражение, чтобы выбрать предложение, основываясь на наличии более чем одного слова

[^.]* word [^.]*\. 

Как я могу выбрать предложение на основе двух или более слов условный путь?

Например, выберите предложение, если слово A и (слово B или слово C) присутствуют.

Предположив слово A = "исследования", слово В = "предложить", слово С = "доказательства", то следующее предложение будет выбрано потому, что 2 слова сопоставляются:

Наши исследованияпредлагают, что генотип ACTN3 R577X является модификатором клинического фенотипа у пациентов с МДД.

Но следующее предложение, так как он только соответствует одно слово не будет выбран:

Кроме того, исследования генотипа RR показали нисходящую линейную тенденцию с увеличением числа случаев лодыжки растяжение связок.

+0

Можете ли вы привести несколько примеров с ожидаемым выходом? – Niitaku

+0

Это зависит от аромата регулярного выражения. Что у тебя? –

+0

Wiktor: javascript – haz

ответ

1

Это может работать:

\b\[a-zA-Z]+\b(?=\s*(test|example)) 

\ б является границей слова, она позволяет выполнить «слова только» поиск.

[a-zA-Z] будет соответствовать любому слову (последовательность одного или нескольких символов).

(? =) является lookahead.

(пример теста) будет истинным, если он соответствует либо тесту, либо примеру.

Рабочий пример: regex101.

+0

Вы имеете в виду [^.] * (Test | пример) [^.] * \. – haz

+0

Вы попробовали его на примерах? – Toto

2

Я хотел бы использовать:

\bworda\b[^.!?]*\b(?:wordb|wordc)\b 

Это будет соответствовать предложение, если оно содержит wordaиwordbилиwordc если не разделены пунктуации.

Если вы хотите, чтобы соответствовать слова в любом порядке:

^(?=[^.!?]*\bstudies\b)(?=[^.!?]*\b(?:suggest|evidence)\b)[^.!?]*\.$ 

var test = [ 
 
'Our studies suggest that ACTN3 R577X genotype is a modifier of clinical phenotype in DMD patients.', 
 
'Moreover, studies of the RR genotype have shown a downward linear trend with increased incidences of ankle sprain.', 
 
'Moreover, studies of the evidence of ankle sprain.', 
 
'Moreover, evidence of the studies of ankle sprain.', 
 
'Moreover, the incidences of ankle sprain.' 
 
]; 
 
console.log(test.map(function (a) { 
 
    return a+' :'+/^(?=[^.!?]*\bstudies\b)(?=[^.!?]*\b(?:suggest|evidence)\b)[^.!?]*\.$/i.test(a); 
 
}));

+0

Получил ваш момент. – MYGz