Regexp, который соответствует допустимому regexps

is - тестирование идентичности, == - проверка равенства. Это означает, что is - это способ проверить, являются ли две вещи одинаковыми вещами или просто эквивалентны.

Скажем, у вас есть простой объект person. Если он называется «Джек» и ему «23 года», он эквивалентен другому 23-летнему Джеку, но его не одному человеку.

class Person(object):
   def __init__(self, name, age):
       self.name = name
       self.age = age

   def __eq__(self, other):
       return self.name == other.name and self.age == other.age

jack1 = Person('Jack', 23)
jack2 = Person('Jack', 23)

jack1 == jack2 #True
jack1 is jack2 #False

Они того же возраста, не один и тот же экземпляр человека. Строка может быть эквивалентна другой, но это не тот же объект.

33
задан mat 12 December 2008 в 23:00
поделиться

7 ответов

Если Вы просто хотите проверить, допустимо ли регулярное выражение или нет, просто попытайтесь скомпилировать его с тем, какой бы ни язык программирования или библиотека регулярных выражений Вы работаете с.

регулярные выражения Парсинга совсем не тривиально. Как автор RegexBuddy, я был вокруг того блока несколько раз. Если Вы действительно хотите сделать это, используйте regex, чтобы маркировать вход и оставить логику синтаксического анализа процессуальному кодексу. Таким образом, Ваш regex соответствовал бы одному regex маркеру (^, $, \w, (, ), и т.д.) за один раз, и Ваш процессуальный кодекс проверит, находятся ли они в правильном порядке.

38
ответ дан 27 November 2019 в 17:31
поделиться

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

15
ответ дан 27 November 2019 в 17:31
поделиться

Как уже сказано, Вы не можете описать регулярные выражения с регулярным выражением из-за их рекурсивного характера. Вам будет нужна контекстно-свободная грамматика для этого.

, Но какова была бы точка наличия такого регулярного выражения, так или иначе? Если Вы просто хотите проверить, корректно ли регулярное выражение, можно просто попытаться использовать его (Pattern.compile(regexp) в Java) и если оно кричит, это не допустимо.

9
ответ дан 27 November 2019 в 17:31
поделиться

Вам, вероятно, нужен синтаксический анализатор, не regex. Regexes являются мощными инструментами, но не анализируют инструменты. Они не хорошо подходят для вложенных грамматик, например.

5
ответ дан 27 November 2019 в 17:31
поделиться

От Douglas Crockford Язык программирования JavaScript видео 4 (4):

/\/(\\[^\x00-\x1f]|\[(\\[^\x00-\x1f]|[^\x00-\x1f\\\/])*\]|[^\x00-\x1f\\\/\[])+\/[gim]*/

http://video.yahoo.com/watch/111596/1710658 приблизительно в-17.20.

4
ответ дан 27 November 2019 в 17:31
поделиться

В зависимости от Вашей цели я сказал бы определенно, возможно.

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

, Если просто необходимо знать, допустим ли regexp, существует иначе. В зависимости от языка Вы используете Вас, мог пробовать/ловить

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

-1
ответ дан 27 November 2019 в 17:31
поделиться

Существует ли регулярное выражение, которое соответствует действительным регулярным выражениям?

По определению, это довольно просто: нет.

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

41
ответ дан 27 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: