Как заставить "+" и "*" работать внутри предисловия к регулярному выражению - PullRequest
0 голосов
/ 03 апреля 2019

У меня сейчас проблемы с регулярным выражением внутри lookahead внутри формулы регулярного выражения.Специально, учитывая строку:

"hello" world

, тогда следующее регулярное выражение, похоже, не работает:

(?<=\"\w+\" )world

Так как же формула регулярного выражения, которую я мог бы использовать, чтобы поймать только 'мир '?

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Регулярное выражение в вашем примере ((?<=\"\w+\" )world) - это взгляд назад, а не взгляд вперед.Большинство языков, в том числе PHP, не поддерживают регулярные выражения нефиксированной длины во внешнем виде.

Вместо этого вы можете написать регулярное выражение типа \"w+\" (world) и извлечь значение первой группы захвата.Хотя в этом примере регулярное выражение кажется излишним ...

1 голос
/ 03 апреля 2019

Когда я проверил ваше регулярное выражение на игровой площадке, оно показало некоторую ошибку в '? <='. Затем я изменил ваше регулярное выражение на </p>

(\?*<*=*"*\w+"* )world

соответствует тестовому Приветному миру.

Первая проблема, которую вам нужно использовать перед \ '?'

Остальные о * и +: * требуют совпадения 0 или более, + требуют совпадения 1 или более. Итак, используйте * после слов можно пропустить, а + для слов нельзя.

Проверьте свое регулярное выражение и поймите среднее значение формулы: https://regexr.com/

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