2017-02-07 36 views
0

我可以從一個字使用此正則表達式選擇一個句子:正則表達式來選擇基於不止一個單詞的存在的句子

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

如何選擇基於兩個或多個單詞的句子有條件的方式?

例如,如果存在單詞A和(單詞B或單詞C),則選擇句子。

假設字A = 「研究」,字B = 「建議」,字C = 「證據」,則下面的句子將被選擇,因爲2個字相匹配:

我們的研究建議 ACTN3 R577X基因型是 DMD患者的臨牀表型的修飾符。

但下面的句子,因爲它僅匹配了一個單詞不會選擇:

此外,研究RR基因型已經顯示出向下的直線 趨勢,增加腳踝的發生率扭傷。

+0

你能給與預期輸出的例子嗎? – Niitaku

+0

這取決於正則表達式的風格。你的是啥呢? –

+0

Wiktor:javascript – haz

回答

1

這可能工作:

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

\ b是一個單詞邊界,它可以讓你執行 「字只有」 搜索。

[a-zA-Z]將匹配任何單詞(一個或多個字符的序列)。

(?=)lookahead

(test | example)如果與測試或示例相匹配,則它們將爲真。

工作示例regex101

+0

你的意思是[^。] *(test |例如)[^。] * \。 – haz

+0

你有沒有試過它給出的例子? – Toto

2

我會使用:

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

,如果它包含wordawordbwordc如果沒有一個標點符號分隔這將匹配的句子。

如果你想在任何順序相匹配的話:

^(?=[^.!?]*\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

相關問題