Привет, я пытаюсь получить слова перед OR. Так что задано строка:
twitter OR facebook AND NOT (hello OR p )
Я хотел бы получить: twitter
и hello
.
Ниже мой код. То, что я пробовал до сих пор, - это получить строку twitter
но я получаю "OR facebook И НЕ (привет", а не просто hello
:
var string2 = "twitter OR facebook AND NOT (hello OR p )"
var result = string2.match(/(.+?)(?=OR)/g)
console.log(result)
Ты можешь сделать:
var string2 = 'twitter OR facebook AND NOT (hello OR p )',
result = string2.match(/\w+(?=\s+OR)/g);
console.log(result)
Одной из ближайших проблем является то, что с помощью (.+?)
Вы выбираете каждый символ, который предшествует OR. Это будет включать пробелы и скобки. По существу все после первого OR и до выбора второго OR.
Вы можете изменить это на \w+?
для выбора только слов.
Вторая проблема заключается в том, что вам нужно, при минимальной проверке для пространств до вашего или ключевого слова, но может также проверить на пробелы после, так что он не соответствует слова, как 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)
Ленький ответ (потому что слова, которые вам нужны, имеют строчные буквы):
var a = "twitter OR facebook AND NOT (hello OR p )";
arr = a.match(/[a-z]{2,20}/g);
console.log(arr);