2017-10-31 16 views
1

こんにちは私はの直前の言葉を入手しようとしていますまたはです。繰り返し単語の前に文字列を含める

twitter OR facebook AND NOT (hello OR p)

私が取得したいのですが

twitterhelloように文字列を与えられました。

以下は私のコードです。私がこれまで試してみましたことtwitter文字列を取得しているが、私はだけでなくhello"OR FacebookやNOT(ハロー"を取得しています:

あなたが行うことができます

var string2 = "twitter OR facebook AND NOT (hello OR p)" 
 

 
var result = string2.match(/(.+?)(?=OR)/g) 
 

 
console.log(result)

答えて

1

var string2 = 'twitter OR facebook AND NOT (hello OR p)', 
 
    result = string2.match(/\w+(?=\s+OR)/g); 
 

 
console.log(result)

0

怠惰な答え(必要な単語が小文字であるため):

var a = "twitter OR facebook AND NOT (hello OR p)"; 
 
arr = a.match(/[a-z]{2,20}/g); 
 
console.log(arr);

0

一つの当面の問題は、(.+?)を使用することによって、あなたがORの前に来るすべての文字を選択していることです。これにはスペースと括弧が含まれます。基本的に最初のORの後と2番目のORの前のすべてが選択されます。

\w+?に変更すると、単語の文字のみを選択できます。

2番目の問題は、ORキーワードの前にスペースがないことを確認する必要がありますが、後で空白がないかチェックしてOREGANまたはBORINGなどの単語と一致しないようにする必要があることです。

var string1 = "twitter OR facebook AND NOT (hello OR p)" 
 
var string2 = "twitter OR facebook AND NOT (hello OR p)" 
 
var string3 = "twitter OR facebook AND NOT (hello OREGAN p)" 
 

 
var expr = /(\w+?)(?=\s+OR\s+)/g 
 

 
var result1 = string1.match(expr) 
 
var result2 = string2.match(expr) 
 
var result3 = string3.match(expr) 
 

 
console.log(result1, result2, result3)

関連する問題