js регулярное выражение для захвата последнего слова перед первой запятой - PullRequest
1 голос
/ 27 марта 2020

У меня есть следующая строка

const str = "bbb=12m3 3be3 34f4, foo=2344 234234 dqda, baz=asdasd asdasd"
const match = str.match(Need the correct regex here);
console.log(match[match.length-1]);

Я бы хотел извлечь любое последнее слово перед первой запятой. В приведенном выше примере это будет 34f4.

Я пытался /bbb=(.*?),/, что дало мне 12 м3 3be3 34f4

Я пытался /bbb=(.+\s(.*)?),/, что дало мне dqda

Я чувствую, что я Я вроде как близок, но не совсем понимаю.

Редактировать - мне нужно специально искать строку 'bbb', так как могут быть проверены другие строки, у которых ее нет, или bbb может быть в другом порядок в строке

отл. Я могу получить

const str = "zzz=12m3 3be3 34f4, foo=2344 234234 dqda, baz=asdasd asdasd"

, который ничего не даст

Или я могу получить

const str = "foo=2344 234234 dqda, bbb=12m3 3be3 34f4, baz=asdasd asdasd"

, где bbb находится в другом месте

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Вы можете использовать

/bbb=[^,]*\s([^,\s]*)/

См. Демоверсию regex

Подробности

  • bbb= - подстрока bbb=
  • [^,]* - 0 или более символов, отличных от ,, как можно больше
  • \s - пробел
  • ([^,\s]*) - Группа 1: ноль или более символов, кроме запятой и пробела

JS демо:

var strs = ['bbb=12m3 3be3 34f4, foo=2344 234234 dqda, baz=asdasd asdasd','zzz=12m3 3be3 34f4, foo=2344 234234 dqda, baz=asdasd asdasd','foo=2344 234234 dqda, bbb=12m3 3be3 34f4, baz=asdasd asdasd'];
var regex = /bbb=[^,]*\s([^,\s]*)/;
for (var i=0; i<strs.length; i++) {
  var m = strs[i].match(regex);
  console.log(strs[i], "=>", ( m ? m[1] : "None!"));
}
0 голосов
/ 27 марта 2020

Вы можете позвонить RegExp#exec один раз, чтобы получить только первый матч:

console.log(/([^\s,]+),/.exec("bbb=12m3 3be3 34f4, foo=2344 234234 dqda, baz=asdasd asdasd"))

Возвращаемые значения - это массив. Первый элемент - это полное совпадение, второй элемент - первая группа захвата.

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