Каковы теоретические последствия неограниченного взгляда позади? - PullRequest
2 голосов
/ 28 июля 2010

Большинство языков допускают просмотр с фиксированной или конечной длиной.Одним заметным исключением является .NET, который позволяет использовать оператор *.

Однако регулярные выражения .NET уже могут распознавать сбалансированные скобки, используя именованный захват, который не является обычным языком.Регулярные выражения по-прежнему регулярны с * во взгляде назад?Также приветствуются расширенные ответы для подвыражений, отличных от * (например, дополнительный обходной путь!).

tl; dr: Регулярные выражения остаются регулярными с * во взгляде позади?

Ответы [ 3 ]

1 голос
/ 02 августа 2010

Я полагаю, что ответ здесь: Влияет ли lookaround на то, какие языки могут сопоставляться регулярными выражениями? можно расширить, чтобы доказать, что добавление * в lookbehind (или даже вложение таких lookbehinds и lookaheads) не влияет «регулярность» выражений. Я не думал об этом больше.

Надеюсь, это поможет!

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

Регулярные выражения закрыты на пересечении. Добавьте новый символ & и перепишите вид сзади: A (? B может включать в себя все, что не выходит за границы A / C. То есть все, кроме предвкушения. Что произойдет, если lookbehind может использовать lookahead или наоборот? Начать работу на. * BC. Ты все еще в порядке.

Таким образом, регулярные выражения могут действительно добавить пересечение и обход бесконечной длины (который может включать в себя больше обхода на любую глубину), и это все равно будет столь же эффективным.

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

Неограниченный внешний вид .NET - это просто уточнение и без того нерегулярного свойства: фиксированные, конечные или бесконечные, взгляды не имеют места в обычной грамматике. Также не предвидят, захватывают группы, обратные ссылки, неохотные квантификаторы, притяжательные квантификаторы, атомные группы, условия, границы слов, якоря ...

Если бы нам пришлось ограничиться теоретически чистыми регулярными выражениями, 99,9% нынешних пользователей регулярных выражений не будут использовать их. Спрашивать, является ли функция «регулярной», - пустая трата времени; полезно ? Это все, что имеет значение.

...