Включить строку перед повторным словом

1

Привет, я пытаюсь получить слова перед 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)
Теги:

3 ответа

1
Лучший ответ

Ты можешь сделать:

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

console.log(result)
0

Одной из ближайших проблем является то, что с помощью (.+?) Вы выбираете каждый символ, который предшествует 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)
0

Ленький ответ (потому что слова, которые вам нужны, имеют строчные буквы):

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню