2017-03-07 89 views
1

我試圖找到一種方法來測試一個字符串,具體麻煩。JavaScript字符串處理可能正則表達式

讓我舉例:

字符串爲:「貝拉和克里斯買一塊麪包,一塊奶酪和黃油的一包」

也可以是這樣的:「貝拉和克里斯 - 買一塊麪包,一塊奶酪,黃油包「

麻煩的是,」貝拉和克里斯買「的部分可以是相同的,其他的可以像改變他們的立場不同。

這樣的:「貝拉和克里斯買了一塊奶酪,麪包,黃油包」

或:「貝拉和克里斯買了一塊奶酪,黃油的包,一塊麪包」

等。

var cn = ["Bella und Chris kaufen ", "ein Stück Käse", "eine Packung Butter", "ein Brot"]; 
//User should write like this: control[1][0]+control[1][1]+", "+control[1][2]+" und "+control[1][3] 
//or this : control[1][0]+control[1][1]+", "+control[1][2]+", "+control[1][3] 

我需要用戶的輸入,並檢查字符串是好有兩個合成條件。我找了一個正則表達式可以處理我的問題,但couln't找到一個。

+1

是否B (?:ein Brot | einStückKäse| eine Packung Butter)(?:$ |,| | und)){3}'如你所期望的那樣工作? –

+0

我會建議不要試圖用正則表達式來執行NLP。 – 2017-03-07 17:01:05

+0

Helloa @torazaburo,你可以請解釋什麼是NLP :) –

回答

1

您可以使用此。

注意:在本文DEMOS多行標誌爲ON

\bBella und Chris kaufen(?:(?: (ein Stück Käse|eine Packung Butter|ein Brot)(?=,| und|$)(?!.*?\1)(?: und|,?)))+\bdemo

,或者如果(意味着^線的開始$線的端部相匹配相匹配)你不關心重複的短語。根據所選輸入的來源,他們可能不會成爲問題

\bBella und Chris kaufen(?:(?: (ein Stück Käse|eine Packung Butter|ein Brot)(?=,| und|$)(?: und|,?)))+\bdemo

但麻煩的是它沒有出現你只是向我們展示了一個句子片段?後

Bella und Chris kaufen ein Stück Käse, ein Brot, eine Packung Butter[...]接下來?

如果它是字符串(因此沒有結束標點符號)結束時,您可以使用正則表達式,因爲我已經寫了。同樣,如果它是一個線的一個輸入端(多個樣本。

如果它是一個週期,你可以改變$和最終\b[.].如果它可以是任何句末標點,您可以更改事件到[.!?]


更新:

你應該有可能使陣列必須具備的短語

var Snacks = ["ein Stück","Käse|eine Packung Butter","ein Brot"]

,並通過回調函數,評估如果你的字符串包含每個短語

var regex = /^Bella und Chris kaufen(?:(?: ((ein Stück Käse)|(eine Packung Butter)|(ein Brot))(?=,| und|$)(?!.*?\1)(?: und|,?)))+\b/gm; 
var picnic = `Bella und Chris kaufen ein Brot, ein Stück Käse und eine Packung Butter 

Bella und Chris kaufen ein Brot, ein Stück Käse, eine Packung Butter 

Bella und Chris kaufen ein Brot, eine Packung Butter und ein Brot 
^ repeats ein Brot twice, as a sample. 

Bella und Chris kaufen ein Stück Käse, eine Packung Butter, ein Brot`; 

// The substituted value will be contained in the result variable 
var result = picnic.replace(regex, function(m) { 
    // loop through Snacks 
    // see if picnic contains each snack element, if it doesn't, append it 
); 

console.log('Substitution result: ', result); 
+0

你好@常規喬,感謝你的回答,我還需要一件事,當用戶寫下其中一個失蹤者時,應該是這樣的:「Bella und Chris kaufen ein Brot,einStückKäse」。我不知道該怎麼做:( 我想學習,但idk在哪裏.. –