Hacker Newsnew | past | comments | ask | show | jobs | submit | mepcotterell's commentslogin

I think I might be missing something. Wouldn't something like "a" be a valid 1-byte regular expression that only matches instances of "a"?


No. "a" produces a match when run on "a" and "bad" and "aaaa" and many more things.

The regex ^a$ only matches "a", but it doesn't match itself.


That isn't a match...

I can still see the neat aspect of the post. But that is not a match.


What do you mean?


Regex libraries often distinguish between a string containing a regex, and matching it.

The string "aaaa" is a Regular Expression that describes a language with exactly one string: "aaaa".

Some regular expression libraries have two operations: They can tell you if a string contains a match somewhere within it, or is exactly a match. Some other libraries only do the first operation, and you need to explicitly ask for "^aaaa$" to get an exact match.

This is one of the things on the differences between the formal definition of a Regular Expression, and a regex library.


Yeah. I want trying to be a jerk. Pedantic some, but I thought the difference between match and find was pretty general in regex land.


> NOTE, delimiters must be included

Your regex is actually /a/ which does not match the string "/a/".


I would say that adding slashes is quite arbitrary constraint, and it is really language specific syntax that is limited to minority of languages (I believe it was introduced in Perl). If you do regexp in Java, Python, C you don't use slashes.

Edit: looks like slashes weren't even used in the example.


It's a pretty boring question if you don't make that requirement, though. The whole exercise is arbitrary, so it doesn't bother me.


Perl's use of this syntax had ancestors in awk, sed, ed, and qed - originally just for string replacements in qed until Ken Thompson wrote a version that did regexps too. It dates back to 1967. https://www.bell-labs.com/usr/dmr/www/qed.html

Deutsch&Lampson's original paper on qed showing s/// used for string substitution prior to it gaining regexps is here: http://research.microsoft.com/en-us/um/people/blampson/04-On...

Incidentally the name 'grep' originated here, 'G/RE/P' was a qed command to do a Global Regular Expression match and Print the matches.


Okay, I'll quote some more from the question:

> […] for the sake of the challenge, let the expression be delimited (starting symbol, expression, ending symbol ex: /fancypantpattern/ or @[^2048]@), if you want to argue quotes as your delimiter, so be it. I think given the apparent difficulty of this problem it won't make much of a difference.


Ahh. Thank you.


The experience they've grown accustomed to.


Perhaps someone could give me a real answer. Thanks!


Actually recommended this site to my Discrete Math students last Fall (this and sharelatex). They seemed to like it a lot.


This is my favorite version of the game, with the doge version coming in a very close second.


Duh. Why is this even a story?


If you're in a position where you need to follow a guide to install Python on Windows, then you're probably so new to Python that you're unlikely to be working with legacy code. Therefore, I'd suggest working with Python 3 and using 64-bit.


I'll take one with a wayfarer blue blocker attachment!


I made a PHP VM in PHP once, but it was just the eval function (http://php.net/manual/en/function.eval.php).


Any reason why you prefer that over "deprecated"?


Deprecation keeps the code around to increase size, reduce performance, and slow down development.


Seeing lots of stuff dropped is preferred to seeing lots of bloat added.


f(n) = O(g(n)) irritates me, but I know that people like to express Big-O that way for convenience.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: