RegExp сократить слово (а) от - до - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь написать регулярное выражение, которое возвращает строку, которая находится между двумя другими.

Строки могут быть:

  1. Выбрать ИЗ item.ui, где бла-бла-бла ...

  2. Выбрать ИЗ item.ui (x, y) И бла-бла ...

  3. Выбрать ИЗ элемента И бла-бла ...

Вернет:

  1. item.ui
  2. item.ui
  3. item

var value = "Select FROM item.ui where blah blah blah"
var re = /(?<=FROM ).*(?= (\s|[(]))/g;
var test = value.match(re);
console.log(test)

Ответы [ 2 ]

1 голос
/ 09 января 2020

Я предполагаю, что вы хотите найти что-то, начиная с FROM, затем пробел, затем то, что вы хотите найти, затем другое пробел, и то, что вы хотите найти, не может содержать пробел.

var value = "Select FROM item.ui where blah blah blah"
var re = /FROM (\S+) .*/;
console.log(value.match(re)[1])
1 голос
/ 09 января 2020

Вы можете использовать (?<=FROM\s)([^\s]+), вот пример:

let arr = ["Select FROM item.ui where blah blah blah...",
  "Select FROM item.ui(x,y) AND blah blah...",
  "Select FROM item AND blah blah..."
]

arr = arr.map(v => v.match(/(?<=FROM\s)([^\s]+)/)[0]);

console.log(arr);

[^\s] будет соответствовать любому символу, не являющемуся пробелом, вы можете расширить этот список другими символами, которые вы хотите разбить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...