Регулярное выражение Named Capture Group альтернативы с начальным символом $ - PullRequest
0 голосов
/ 15 января 2019

У меня есть две группы web и var со следующими альтернативными строками: aliceblue, yellow и $ aliceblue, $ yellow

Я могу получить совпадения для aliceblue и yellow в группе, но я не получаю совпадения для $ aliceblue или $ yellow в группе var.

re = '/(?x)(?i)(?<![@#$.\-_])(?:\b(?P<var>$aliceblue|$yellow)\b(?!\()|\b(?P<web>aliceblue|yellow)\b(?!\())(?![@#$.\-_])/m';
str = 'aliceblue';

Я безуспешно пытался уйти от символа $

re = '/(?x)(?i)(?<![@#$.\-_])(?:\b(?P<var>\$aliceblue|\$yellow)\b(?!\()|\b(?P<web>aliceblue|yellow)\b(?!\())(?![@#$.\-_])/m';
str = '$aliceblue';

Как я могу изменить регулярное выражение, чтобы получить совпадение для $ aliceblue в группе var и aliceblue в сети группы?

1 Ответ

0 голосов
/ 15 января 2019

Помимо экранирования $ в вашем регулярном выражении, вам также необходимо избавиться от \b непосредственно перед ним, так как $ не является частью символа слова \w, который является [a-zA-Z0-9_ ]

Проверьте это демо, удалив \ b из вашего регулярного выражения

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