2017-10-31 1 views
1

Hallo Ich versuche, die Wörter kurz vor ODER zu erhalten. So gegeben, um die Zeichenfolge:Zeichenkette vor wiederholtem Wort einschließen

twitter OR facebook AND NOT (hello OR p)

Ich mag würde bekommen: twitter und hello.

Unten ist mein Code. Was ich versucht habe, so weit ist immer die twitter Saite, aber ich bin immer "oder Facebook AND NOT (hallo" statt nur hello:

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

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

 
console.log(result)

Antwort

1

können Sie tun:

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

 
console.log(result)

0

Eine faule Antwort (weil die Worte, die Sie brauchen, sind klein geschrieben):

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

0

Ein unmittelbares Problem ist, dass (.+?) mit Hilfe Sie jedes Zeichen sind die Auswahl, die vor oder kommt. Dies beinhaltet Leerzeichen und Klammern. Im Wesentlichen wird alles nach dem ersten ODER und vor dem zweiten ODER ausgewählt.

Sie können dies in \w+? ändern, um nur Wortzeichen auszuwählen. Das zweite Problem ist, dass Sie mindestens nach Leerzeichen vor Ihrem OR-Schlüsselwort suchen müssen, aber auch nach Leerzeichen suchen können, damit es nicht mit Wörtern wie OREGAN oder BORING übereinstimmt.

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)

Verwandte Themen