Я попытался создать шаблон для этой строки: (abcde ..., и это выглядит так:

\b(?=[(])[a-zA-Z_0-9]+\b

Я хочу, чтобы abcde был выбран.

Почему это не работает?

-3
Survari 29 Авг 2017 в 18:22

3 ответа

Лучший ответ

Кажется, вы ищете взгляд за (?<=), который не поддерживает Javascript Regex, попробуйте захватить нужный вам шаблон и извлечь его с помощью match:

console.log(
  "(abcde...".match(/\((\w+)\b/)[1]
)
2
Psidom 29 Авг 2017 в 15:50

Две причины

  • предвкушение не потребляет символы
  • граница '\ b' соответствует '('

Источник (abcde ... Теперь проверьте следующие регулярные выражения:

\b(?=[(])([a-zA-Z_0-9]+)\b      # doesn't match

\b(?=[(]).([a-zA-Z_0-9]+)\b     # doesn't match

И наконец:

(?=[(]).([a-zA-Z_0-9]+)\b        # matches

Таким образом, логически, в первом регулярном выражении \ b соответствует '('. После этого упущение блестяще завершается.

0
Marc Lambrichs 29 Авг 2017 в 15:58

Фигурная скобка ( уже действует как граница слова, удалите \b в начале шаблона:

\([a-zA-Z_0-9]+\b

https://regex101.com/r/MZhqSL/2

0
RomanPerekhrest 29 Авг 2017 в 15:28