Затвердження в умовному регулярному виразі


0

Маючи наступний регулярний вираз:

(?(?<=\AA)a|e)/g

і тестовий рядок:

Aa
Ae
Be

вона відповідає a (рядок № 1), e (рядок № 2), e (рядок №3). Я думаю, що це має відповідати точно a (рядок # 1), оскільки є 3 рядки, але лише один рядок - \AA матчі A тільки один раз (на першому рядку рядка) і тому застосовується a шаблон, який відповідає тільки a у першому рядку.


regex101.com з ароматом pcre (php)
Mulligan

Видалити g прапор.
Toto

"і тому застосовується a шаблон, який відповідає тільки a в першому рядку "- у вас є a умовно вираз, він намагається відповідати e у випадку, якщо умова ( \AA ) не співпадає. Дати три результати правильно.
Máté Juhász

Я не думаю, що отримання 3 результатів правильно. Як я вже писав, є тільки один рядок, так що тільки один збіг з випадком ˋ \ t
Mulligan

Не могли б ви спробувати відповісти на моє останнє повідомлення?
Mulligan

Відповіді:


-1

Не повинна вона відповідати точно a (рядок # 1)?

Ні.

Ваша поточна фраза перекладена на англійську мову:

  • ?(?<=\AA) - якщо поточному символу передує початок рядка AND A
    • потім збігаються a - це буде відповідати a у першому рядку
    • else (= будь-які інші випадки) збігаються e - це буде відповідати e у рядках 2 і 3

Так чи є один рядок або 3 (по одному на кожний рядок)?
Mulligan

Вибачте, але це не може бути 3 рядки. Якщо б це було, це не могло e у рядку # 2 (якщо перший символ є A потім спробуйте махати a - і це не вдасться, оскільки лінія є Ae, тому a не збігається e )
Mulligan

Добре, тепер я розумію, що ви маєте на увазі. Можливо, оновіть своє запитання і надайте детальну інформацію про тести.
Máté Juhász

Я оновив своє запитання. Чи можете ви тепер спробувати відповісти на нього?
Mulligan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.