Если у вас нет вида сзади, как в 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
.