2010-08-08 4 views
2

Программным способом Рассмотрим следующие регулярные выражения:Regular Expression: Математически против

  1. 7+
  2. (7) +

ли кто-нибудь, что хорошо знаком с регулярной теорией выражения в математике согласен что два регулярных выражения семантически одинаковы?

+1

Просто чтобы уточнить, что означает «vs. Programmatically» часть вашего названия вопроса? –

+1

@Greg: Я предполагаю, что «математически» OP означает регулярные языки в вычислительной теории, а «программно» относится к реализациям регулярных выражений (которые распознают больше, чем обычные языки). – polygenelubricants

+0

@polygenelubricants: вы догадались, что это правильно :-) –

ответ

1

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

+0

Этот ответ имеет математический вкус, используя термины, взятые из теории регулярных выражений. –

0

Опишите ли они один и тот же язык? Да. Они имеют в виду то же самое для тех, кто пытается интерпретировать язык? Нет. Второй говорит мне, что меня больше интересует 7-е.

4

Программный код (как указано в выражении двигателем регулярного выражения языка), он отличается только в capturing groups.

Кроме этого, они одинаковы. Это как письмо ((7) + (1)), а не 7 + 1. Они оцениваются до . (Да, математически говоря, обычные языки ничего не оценивают)

+0

Я не понимаю, что вы подразумеваете под «математически говоря, обычные языки ничего не оценивают». Регулярное выражение математически оценивает что-то точно. –

+0

Я даже не уверен в этом. Регулярное выражение описывает языки, которые затем анализируются детерминированной машиной конечного состояния. Результат такой оценки является либо истинным, либо ложным, но язык не имеет значения для себя (зависит от FSM, с которым вы разбираетесь). Пожалуйста, поправьте меня, если я ошибаюсь. – Chubas

0

Вторая сводится к первому. Согласны ли вы, что

ab+ 

и

a(b)+ 

и

(ab)+ 

семантически разные?

+0

Ну, математически ab + и a (b) + одинаковы семантически. –

+0

Да, но (ab) + нет, и поэтому скобки важны. Если выбран минималистский пример (в соответствии с первыми двумя), то важные отличия теряются, поэтому нам нужен третий. – djna

0

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

+0

Нет, программно они отличаются друг от друга. Попробуйте сопоставить оба регулярных выражения в Python, используя re.findall() или в C, используя POSIX regex() в «777». Результаты очень разные. –

+0

Извините, я думаю, re.findall() не является синонимом для regex().Итак, да, программно они просто отличаются в группировке. Но меня интересует математика. –