используя совпавшее выражение в качестве отправной точки для совпадения - PullRequest
0 голосов
/ 15 июля 2010

Я использую http://regexpal.com/, а некоторые упреждающие и упреждающие сообщения не поддерживаются в JavaScript.

все еще возможно использовать совпавшие критерии, чтобы сигнализировать о начале матча, а другой - о конце, без включения в матч.

например, если я использую [тег], чтобы получить только тег, или если у меня есть {abc 1, def}, чтобы соответствовать abc 1 и def

Достаточно просто получить это, когда строка короткая, но я бы хотел, чтобы это было найдено из более длинной строки, только когда эта группа окружена {} и отдельные элементы окружены `символом

Ответы [ 2 ]

0 голосов
/ 15 июля 2010

Полагаю, вы всегда можете использовать группировку:

m = "blah{abc 1, def}blah".match(/\{(.*?)\}/)

Где

m[0] = "{abc 1, def}"
m[1] = "abc 1, def"

На этой странице регулярного выражения не отображаются результирующие подгруппы, если таковые имеются.

0 голосов
/ 15 июля 2010

Если у вас нет вида сзади, как в JavaScript, вы можете использовать группу без захвата (или вообще без группы) вместо (позитивного) вида сзади.Конечно, это станет частью общего совпадения, поэтому вам нужно заключить в скобки часть, которую вы действительно хотите сопоставить, а затем оценить не все совпадение, а только эту группу захвата.

Так что вместо этогоиз

(?<=foo)bar

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

foo(bar)

В первой версии результат совпадения bar будет иметь обратную ссылку $0.Во второй версии $0 будет равно foobar, но $1 будет содержать bar.

Это не удастся, однако, если совпадение и внешний вид следующего совпадения будут перекрываться.Например, если вы хотите сопоставить цифры, заключенные в буквы.

(?<=[a-z])[0-9](?=[a-z])

будет соответствовать всем числам в a1b2c3d, но

[a-z]([0-9])[a-z]

будет соответствовать только 1 и3.

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