• (cs) in reply to Rafael
    Rafael:
    Too bad Jed didn't remember to sanitize the search terms... Try and search for 1.56 and you shall fail when matching with 1056. That should be nice if we are speaking of figures.
    Not to mention "i.e." which matches "item" or "e.g." which matches "eggs", and Jed will surely have those on his face...
  • (cs) in reply to Anon

    Some people, who use regular expressions, know what they are doing and when they use them they go from one problem to no problems.

    Some people never tire or repeating a remark which is only valid in a limited context. It's not funny, it's not generally true and, if you really think using regular expressions invariably creates problems, then you are ignorant, incomptent or both.

  • (cs)

    The real WTF is one of the following: a) they bothered to keep Jed's solution for v2.0 or b) they lied about that, to spare his feelings

    What they should have done was to take Jed out and either set him up for some Special High-Intensity Training or reassigned him to, er, another company.

  • AB (unregistered) in reply to NN
    NN:
    AB:
    This really p!sses me off:

    If matches.Count > 0 Then Return True Else Return False End If

    Its so pointless. Why do sheeple do it? Can they not see the total redundancy of 5 lines of code? Do they really think its "more readable"?

    Return matches.Count > 0

    better:

    Return (New Regex(regexString)).Matches(searchText) > 0

    No, no it's not.

  • (cs) in reply to PedanticCurmudgeon
    PedanticCurmudgeon:
    Melnorme:
    Melnorme:
    Pro Coder:
    Melnorme:
    Why would need a sort and binary search? Just put all the words in the text into a hash set and do a contains (or whatever the VB equivalent is) for each word.
    Because Contains() is O(n) and a binary search is O(log n). If you work for me, I demand mandatory suicide from all team members who can't find a solution that is at least as good as O(log n). \m/

    This illustrates the point as to why using built-in library functions is considered harmful. It short-circuits critical thought and analysis.

    Please read up on what a hash set is.

    Wait a minute, I'm being trolled, right?

    PROTIP: If you're posting here, and you're not trolling, you're being trolled.
    ...or making lame jokes.

  • Oak (unregistered) in reply to Steve The Cynic
    Steve The Cynic:
    The documented requirements:

    Write a function that returns true if at least one string in the /search terms/ array is found in /bigstring/, otherwise returns false.

    So, my version, written in pseudocode because I'm lazy:

    func containsAtLeastOneOf( array-of-strings searchTerms, string bigString ) returns truefalse
    
    for each searchTerm in searchTerms:
      if bigstring contains searchTerm:
        return true
    
    return false

    No regex, no stacks, no hash tables, nothing. Just enumerate the search terms and return true as soon as you find one that's in the big string. If you don't find one, return false.

    Jed is an idiot, as is Bob. So are most of you.

    If there are 80 search terms on the 77th appears inside bigstring, your code will run

    bigstring contains
    77 times. Each in O(n), and we assume n is very large here. I'm guessing
    contains
    itself is a character-by-character (short-circuiting) comparison. So we could say your solution runs in O(n (bigstring length) * m (num of search terms) * k (length of search terms, assuming for simplicity they are all in the same length) )

    A regex match, on the other hand, will only run on bigstring once. O(n). Not even O(n*k) since it will match characters against the regex automata as it goes. Granted, taking branches in the automata is more expensive than character comparison, but in general the regex solution does have a significant performance advantage here.

  • Larry (unregistered) in reply to Dilbertino
    Dilbertino:
    A regex wtf, and nobody mentioned the perl oneliner yet? :)

    return grep { $searchText =~ $_ } @searchTerms;

    It continues to amaze me how verbose other languages are for the most basic operations...

    For those of you who are not blessed with a project written entirely in perl, check if your language supports a "system" call. Then go ahead and do your wimpy eye candy code in whatever language they make you use, and shell out to perl for the heavy lifting.

  • (cs) in reply to Martin Milan
    Martin Milan:
    PiisAWheeL - read it again... I think you'll find I actually do return a boolean, and not matches.

    Martin.

    Its cool man, I was trying to be a smartass but my comprehension of vb is from high school like 10 years ago, So I'll just stick to the python,php, and C variations I'm obviously much better at :)

    For shits and giggles (after a second look): Your function returs 0 (bool false) for no matches and any matches will be non 0 (bool true) since it is expecting a boolean return, correct?

  • kit (unregistered) in reply to jes
    jes:
    Some people, who use regular expressions, know what they are doing and when they use them they go from one problem to no problems.

    Some people never tire or repeating a remark which is only valid in a limited context. It's not funny, it's not generally true and, if you really think using regular expressions invariably creates problems, then you are ignorant, incomptent or both.

    Very true, except that this is a perfect illustration of the "two problems" scenario.

  • (cs)

    TRWTF is that almost everyone here seems to be incapable of solving this problem efficiently. Hint: index the big string somehow, search for terms until first found! Sheesh! How hard can it be?

  • (cs) in reply to jarfil
    jarfil:
    Hoffmann:
    minuses for Jed: - regEx is expensive
    No, is not.

    RegEx initial parsing is somewhat expensive. RegEx execution on the other hand, is log(N), blazing fast for large amounts of search terms.

    Depends. For matching without any captures, it can be blazing fast once the expression is in memory (even if it's compiled, it has to load the compiled expression). With captures or groups... Doing it without regular expressions can be MUCH faster (I cut SECONDS off a service call in our application simply by removing two regular expressions that were used once each).

  • ydrol (unregistered)

    Pattern.quote() and word boundary are your friends.

    Only build a hash from the body text, if you plan to search exactly the same text 100s of times, as building the hash is expensive.

    On the other hand if Jed had used Pattern.quote(searchTerm[i]) and word boundaries then solution is efficient and elegant. - assuming you are OK with (regex idea of word boundaries)

  • Noughmad (unregistered) in reply to Larry

    If you have access to system(), why not just call grep directly?

  • Martin Milan (unregistered) in reply to PiisAWheeL
    PiisAWheeL:
    Martin Milan:
    PiisAWheeL - read it again... I think you'll find I actually do return a boolean, and not matches.

    Martin.

    Its cool man, I was trying to be a smartass but my comprehension of vb is from high school like 10 years ago, So I'll just stick to the python,php, and C variations I'm obviously much better at :)

    For shits and giggles (after a second look): Your function returs 0 (bool false) for no matches and any matches will be non 0 (bool true) since it is expecting a boolean return, correct?

    Nope - Boolean is a defined type in VB - though it will implictly cast that way. The code I have given is VB.Net incidentally, framework 4...

  • ydrol (unregistered)

    For regex phobic, there is also Boyer Moore algorithm,

    but Jed was close - just not quite there.

  • script kiddie (unregistered)

    "b) they lied about that, to spare his feelings"

    c. Anyone who thinks the original code is acceptable doesn't understand the second version and lied to spare everyone's feelings.

  • Jose_the_bØ55_1999 (unregistered)

    A quote from the article:

    "somewhere, a Reverse Polish Notation calculator was crying"
    jaja! Reminds me of this joke image from XKCD (a comic on-line) [image].

  • noland (unregistered) in reply to Jose_the_bØ55_1999

    You picture thanks! me say.

  • allinflames (unregistered) in reply to Pro Coder

    Is that you, Santor?

  • (cs) in reply to Beaux Jackson
    Beaux Jackson:
    Steve The Cynic:
    The documented requirements:

    Write a function that returns true if at least one string in the /search terms/ array is found in /bigstring/, otherwise returns false.

    So, my version, written in pseudocode because I'm lazy:

    func containsAtLeastOneOf( array-of-strings searchTerms, string bigString ) returns truefalse
    
    for each searchTerm in searchTerms:
      if bigstring contains searchTerm:
        return true
    
    return false

    No regex, no stacks, no hash tables, nothing. Just enumerate the search terms and return true as soon as you find one that's in the big string. If you don't find one, return false.

    Jed is an idiot, as is Bob. So are most of you.

    </site>

    FTFY

  • easyk (unregistered)

    this kind of shit makes me glad I write device drivers and VHDL.

  • rfoxmich (unregistered)

    TRWTF is that the phrase XML has not come up in thye comments yet. Captcha: augue.

  • Katy Gaga (unregistered) in reply to frits
    frits:
    PedanticCurmudgeon:
    Melnorme:
    Melnorme:
    Pro Coder:
    Melnorme:
    Why would need a sort and binary search? Just put all the words in the text into a hash set and do a contains (or whatever the VB equivalent is) for each word.
    Because Contains() is O(n) and a binary search is O(log n). If you work for me, I demand mandatory suicide from all team members who can't find a solution that is at least as good as O(log n). \m/

    This illustrates the point as to why using built-in library functions is considered harmful. It short-circuits critical thought and analysis.

    Please read up on what a hash set is.

    Wait a minute, I'm being trolled, right?

    PROTIP: If you're posting here, and you're not trolling, you're being trolled.
    ...or making lame jokes.
    Could we please show a little sensitivity here? I have a son who is lame and I can assure you it's no joking matter.

    Captcha: secundom = those dummies who try to post "frist" after someone else already has.

  • Yale (unregistered)

    This kind of shit makes me glad I code in Ruby.

    def doc_contains_at_least_one_term( terms, body )
      terms.each{ |term| return true if body.match(term) }
      false
    end
    

    Captcha: sino (actually, Ruby is Japano)

  • (cs) in reply to jes
    jes:
    Some people, who use regular expressions, know what they are doing and when they use them they go from one problem to no problems.

    Some people never tire or repeating a remark which is only valid in a limited context. It's not funny, it's not generally true and, if you really think using regular expressions invariably creates problems, then you are ignorant, incomptent or both.

    +1
  • Zunesis, In the Flesh! (Your mom's!) (unregistered) in reply to easyk
    easyk:
    this kind of shit makes me glad I write device drivers and VHDL.
    "What's VHDL?" "Hmmm... Well, it's a very hard to describe language." "Oh. Is it hard to write in?" "Yes, it's hard to do, too." "Hard, huh?" "Raging hard." "That's probably frustrating." "Well, yeah, being so hard and all." "You'd have to struggle with it a while, especially if you lacked experience conceptualizing a system using a text-based definition." "Right. I'm kind of a code 'virgin'." "Precisely." "Precisely what?" "Virgins Hold Dicks Longer! A HA HA HA AH HA!" "Oh, God! Put that away!" "Come here, you!" "No! *muff* God, no!" "Zune'll give you all the experience you need!" "*waaa!* please stop!" "Oooh, let me taste those tears, they're so delicious!" "*waaaa!*" "All right, open wide! Time for a core dump!" "A what?!" "Oh boy, you're learning all sorts of things today!"

    ...that's enough for now. Stay tuned for the rest of easyk's Adventures in V.H.D.L.!

  • (cs) in reply to frits
    frits:
    PedanticCurmudgeon:
    Melnorme:

    Wait a minute, I'm being trolled, right?

    PROTIP: If you're posting here, and you're not trolling, you're being trolled.
    ...or making lame jokes.
    I wasn't really going for completeness here, but while we're at it, I also forgot posting lame pictures of places you've obviously never been.

  • Check the CS lit... (unregistered) in reply to Pro Coder
    Pro Coder:
    If you do didn't immediately think that this should be done with a hash, a sort, and a binary search, kill yourself now and save us all future aggravation.
    Actually, what you describe would require re-running the binary search for each search term, which is O(p*log n) where p is the number of search terms and n is the length of the document, while Aho-Corasick achieves a worst case of O(m + n) where n is the length of the string and m is the sum of the lengths of the search terms (Rabin-Karp yields the same average run time with even less memory consumption, but has a worst-case of O(mn)). Besides, both Aho-Corasick and Rabin-Karp can handle cases where the substrings being searched for cross word/... boundaries, which would break your algorithm unless you did a bunch of extra hashing, leading to worst-case O(2^n) space growth. (Your not-quite-naive algorithm is O(n) space, while Aho-Corasick is O(m) space and Rabin-Karp is O(p) space in the worst case.)

    P.S. if you ever pop the hood on fgrep, it uses Aho-Corasick internally.

  • Tasty (unregistered) in reply to Jan de Vos
    Jan de Vos:
    If matches.Count > 0 Then Return True Else Return False End If

    Its so pointless. Why do sheeple do it? Can they not see the total redundancy of 5 lines of code? Do they really think its "more readable"?

    I believe this is one of those cases where, once you've made a certain mental step, you simply can't go back to thinking the way you did before.

    In this case, the mental step is that 'a < b' is really something that results in a boolean value, and is not 'some special syntax that can be used in if and while constructions'.

    Not all languages have true booleans. The full if...then syntax guarantees a particular return value. This is not a sheeple thought process.

    C evaluates a < b to either 0 or1. It won't even support a < b < c syntax, since that makes (a < b) => 1 which is often less than c.

    Furthermore, a device drive might not like 0x0001. It may need 0xffff as its true input.

  • (cs)
    1. Iterate the search terms parameter array, using InStr() function to do the matching.
    2. Use Exit For to stop the iteration when you get your first match! (for Turing's sake; for Knuth's sake)
    3. Sort the search-term items in descending frequency order before passing into the function. (if heuristics are available)
  • (cs) in reply to Katy Gaga
    Katy Gaga:
    frits:
    PedanticCurmudgeon:
    Melnorme:
    Melnorme:
    Pro Coder:
    Melnorme:
    Why would need a sort and binary search? Just put all the words in the text into a hash set and do a contains (or whatever the VB equivalent is) for each word.
    Because Contains() is O(n) and a binary search is O(log n). If you work for me, I demand mandatory suicide from all team members who can't find a solution that is at least as good as O(log n). \m/

    This illustrates the point as to why using built-in library functions is considered harmful. It short-circuits critical thought and analysis.

    Please read up on what a hash set is.

    Wait a minute, I'm being trolled, right?

    PROTIP: If you're posting here, and you're not trolling, you're being trolled.
    ...or making lame jokes.
    Could we please show a little sensitivity here? I have a son who is lame and I can assure you it's no joking matter.

    Captcha: secundom = those dummies who try to post "frist" after someone else already has.

    That no laughing matter joke needs to take an arrow to the knee.

  • AP² (unregistered) in reply to Yale
    Yale:
    This kind of shit makes me glad I code in Ruby.
    def doc_contains_at_least_one_term( terms, body )
      terms.each{ |term| return true if body.match(term) }
      false
    end
    
    Captcha: sino (actually, Ruby is Japano)

    Pfft. Here's in Python:

    def doc_contains_at_least_one_term( terms, body ):
        return any((term in body for term in terms))
    

    50% of the lines.

    And yes, it short-circuits: the expression inside the any() is a generator which only processes each term as they're consumed by any.

  • qbolec (unregistered)

    Stupid Comment 1: "This requires n*n splits".

    no it isn't. It performs at most 2*n splits. Or even n+1, as IIRC in VB the loop boundaries are computed once, at the begining.

    Stupid Comment 2: "Use hash, sort, bsearch"

    no, just put all search terms in hash, then check each word in O(1).

    Stupid Comment 3: this comment

  • (cs) in reply to Zunesis, In the Flesh! (Your mom's!)

    You taught him to wave his cock around.

  • (cs) in reply to PiisAWheeL
    PiisAWheeL:
    Katy Gaga:
    Could we please show a little sensitivity here? I have a son who is lame and I can assure you it's no joking matter.

    Captcha: secundom = those dummies who try to post "frist" after someone else already has.

    That no laughing matter joke needs to take an arrow to the knee.

    This is at least partially my fault. I tried to kill the meme by making a ridiculous application of it. Fake Bob never went away, and the meme just multiplied. If you can think of anything that can kill it, you will have our undying gratitude.

  • Jay (unregistered) in reply to AB
    AB:
    This really p!sses me off:

    If matches.Count > 0 Then Return True Else Return False End If

    Its so pointless. Why do sheeple do it? Can they not see the total redundancy of 5 lines of code? Do they really think its "more readable"?

    Return matches.Count > 0

    Just the other day I came across a line of VB code reading:

    dim valid as boolean=iif(amount>0, true, false)
    

    What exactly do we need the iif for?

  • Jay (unregistered) in reply to ContraCorners
    ContraCorners:
    ParkinT:
    "Let me tell you a story of a man named Jed. Poor mountaineer, but he kept his family fed..."
    It's been years since I've seen that show, but I always heard that line as "...barely kept his family fed."

    I thought the same thing.

    And then I thought, What part of my brain is used up remembering theme songs to decades-old television programs? How many can I remember on the spur of the moment? If I could send these files to the recycle bin, could I free up some space for more useful data?

    Flintstones, meet the Flintstones ...

    ... story, of a man named Brady ...

    ... a three-hour tour, a three-hour tour ...

    I still remember some truly obscure ones, like:

    It's about time, it's about space ...

    Captain Scarlet! Captain Scarlet! he's the one who knows ...

  • Jay (unregistered) in reply to Oak
    Oak:
    Steve The Cynic:
    The documented requirements:

    Write a function that returns true if at least one string in the /search terms/ array is found in /bigstring/, otherwise returns false.

    So, my version, written in pseudocode because I'm lazy:

    func containsAtLeastOneOf( array-of-strings searchTerms, string bigString ) returns truefalse
    
    for each searchTerm in searchTerms:
      if bigstring contains searchTerm:
        return true
    
    return false

    No regex, no stacks, no hash tables, nothing. Just enumerate the search terms and return true as soon as you find one that's in the big string. If you don't find one, return false.

    Jed is an idiot, as is Bob. So are most of you.

    If there are 80 search terms on the 77th appears inside bigstring, your code will run

    bigstring contains
    77 times. Each in O(n), and we assume n is very large here. I'm guessing
    contains
    itself is a character-by-character (short-circuiting) comparison. So we could say your solution runs in O(n (bigstring length) * m (num of search terms) * k (length of search terms, assuming for simplicity they are all in the same length) )

    A regex match, on the other hand, will only run on bigstring once. O(n). Not even O(n*k) since it will match characters against the regex automata as it goes. Granted, taking branches in the automata is more expensive than character comparison, but in general the regex solution does have a significant performance advantage here.

    Umm, wait ...

    We have to make assumptions about how the regex processor works, but let's suppose it does traverse the big string just once. It still has to compare a string beginning at each position in the big string to each of the search terms in turn. i.e. number of comparisons is len(bigstring)*count(terms)

    The proposed "contains" search will pick each term and for each loop through the big string. Number of comparisons is count(terms)*len(bigstring).

    As multiplication is commutative, the number of comparisons is the same in either case. Well, assuming that none of the search terms are found and so you have to search all the way to the end.

  • LinqMe (unregistered)

    In C#:

    static bool Contains(this string text, IEnumerable<string> words)
    {
       return words.Any(w => text.IndexOf(w, StringComparison.CurrentCultureIgnoreCase) >= 0);
    }

    or if the Split was really intened:

    static bool Contains1(this string text, IEnumerable<string> words)
    {
       return text.
          Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).
          SelectMany(t => words.Select(w => new { t, w })).
          Any(p => p.w.Equals(p.t, StringComparison.CurrentCultureIgnoreCase));
    }

    For large texts you could also throw an AsParallel in between to make it multithreaded.

  • Richard (unregistered)
    Dim rx As Object = New Regex(regexString)
    Dim matches As MatchCollection = rx.Matches(searchText)

    Yay! Late-binding FTW!

  • Jay (unregistered)

    Need I point out that Jeb's function will not give the same results as Bob's function? Bob splits the big string at space boundaries and looks for full-word matches. Jeb does not look for word boundaries. Actually, this will probably make Jeb's version slower, as if the average word length is, say, six, then Jeb will do six times as many compares as Bob.

    Not to mention that Jeb makes zero effort to escape the strings, so if search terms can contain dollar signs, periods, brackets, etc, etc, he will give incorrect results. (I recently used a function that I thought did a string compare but actually did a Regex search. I wanted to search a template file for the token "[DATE]" and replace it with the current date. This gave rather amusing results.)

  • Jay (unregistered)

    Why do programmers regularly write code that keeps looking for something after they've already found it?

    It's like the cliche line, "When I find it, it will be in the last place I look!" Which I normally reply, well duh, why would you keep looking for it after you've found it? But for many programmers, they DON'T find it in the last place they look, because they don't stop looking.

  • Ryan O'Hara (minitech) (unregistered)

    That "fixed" code is pretty terrible, too.

       If matches.Count > 0 Then
         Return True
       Else
         Return False
       End If

    Um...

    Return matches.Count > 0

    And how about all of the +s when & is the real concatenation operator in VB.NET? Why in the world would you ever write Step 1? The If around the For is redundant, too. rx is being declared as an Object - it should be a Regex. And why not just declare it As New Regex anyway? Also, making a MatchCollection is pointless, just take the Count right away. These people need to turn Option Strict On.

    Finally, why would you even use joined regular expressions for this in the first place? Especially without escaping? It's not very efficient, and if someone searches for a term with some invalid character, the whole thing blows up.

    AND WHY NOT JUST USE Join() INSTEAD OF THE FOR LOOP?

    So here's my rewrite:

    Public Function ContainsAny(ByVal searchTerms() As String, ByVal document As String) As Boolean
        Return searchTerms.Any(Function(x) document.Contains(x))
    End Function

    3 lines. Wow, wonder if they'd hire me.

    tl;dr: TRWTF is the new code.

  • not the other thing (unregistered) in reply to Yale
    Yale:
    This kind of shit makes me glad I code in Ruby.
    def doc_contains_at_least_one_term( terms, body )
      terms.each{ |term| return true if body.match(term) }
      false
    end
    
    Captcha: sino (actually, Ruby is Japano)

    you're making it too complicated

    def doc_contains_at_least_one_term(terms,body)
      terms.any?{|term| body.match(term)}
    end
    
  • (cs)

    Geez, both solutions are pretty crappy... for starters, they both continue checking for subsequent search terms, instead of returning true immediately upon finding one of them...

    At least Jeb got rid of the useless "Step 1" from the for loops, though...

  • qbolec (unregistered) in reply to Ryan O'Hara (minitech)
    Ryan O'Hara (minitech):
    Public Function ContainsAny(ByVal searchTerms() As String, ByVal document As String) As Boolean
        Return searchTerms.Any(Function(x) document.Contains(x))
    End Function
    How about eta-reduction?
    Public Function ContainsAny(ByVal searchTerms() As String, ByVal document As String) As Boolean
        Return searchTerms.Any(document.Contains)
    End Function
    

    I'm not sure if it would work in VB, nor does Contains takes words boundaries into account...

  • foo (unregistered) in reply to AP²
    AP²:
    Yale:
    This kind of shit makes me glad I code in Ruby.
    def doc_contains_at_least_one_term( terms, body )
      terms.each{ |term| return true if body.match(term) }
      false
    end
    
    Captcha: sino (actually, Ruby is Japano)

    Pfft. Here's in Python:

    def doc_contains_at_least_one_term( terms, body ):
        return any((term in body for term in terms))
    

    50% of the lines.

    And yes, it short-circuits: the expression inside the any() is a generator which only processes each term as they're consumed by any.

    You know, if your languages allow you to write inefficient code in few lines, that's not exactly reason to celebrate.

    But keep posting your ignorance. I'm sure it works in many other languages as well.

  • NPSF3000 (unregistered) in reply to foo
    foo:
    AP²:
    Yale:
    This kind of shit makes me glad I code in Ruby.
    def doc_contains_at_least_one_term( terms, body )
      terms.each{ |term| return true if body.match(term) }
      false
    end
    
    Captcha: sino (actually, Ruby is Japano)

    Pfft. Here's in Python:

    def doc_contains_at_least_one_term( terms, body ):
        return any((term in body for term in terms))
    

    50% of the lines.

    And yes, it short-circuits: the expression inside the any() is a generator which only processes each term as they're consumed by any.

    You know, if your languages allow you to write inefficient code in few lines, that's not exactly reason to celebrate.

    But keep posting your ignorance. I'm sure it works in many other languages as well.

    Few lines of [clean, understandable] code IS efficient in developer time - usually one of the most important metrics there is.

  • foo (unregistered) in reply to Jay
    Jay:
    Umm, wait ...

    You have to learn about how any decent regex processor works, in particular it does traverse the big string just once. It does not have to compare a string beginning at each position in the big string to each of the search terms in turn. i.e. number of comparisons is not len(bigstring)*count(terms).

    Now please stop talking rubbish about things you obviously have no clue about.

    The brilliance about regexs is that they actually can match a string against an arbitrarily complicated regex (excluding back-references and other not-strictly-regex features), in particular against an "or" of many expressions, in O(length(string)). The complexity of the regex only matters for the initial "compilation" step.

    If that sounds magic to you, it probably is, just like cars would have been magic to medieval people. (Except that those medieval people couldn't just use the internet to learn about how cars really work.)

    But you (and all the other ignorants) just keep posting your boring "two problems" quote without understanding its context.

  • (cs) in reply to Jay
    Jay:
    And then I thought, What part of my brain is used up remembering theme songs to decades-old television programs? How many can I remember on the spur of the moment? If I could send these files to the recycle bin, could I free up some space for more useful data?

    Flintstones, meet the Flintstones ...

    ... story, of a man named Brady ...

    ... a three-hour tour, a three-hour tour ...

    I still remember some truly obscure ones, like:

    It's about time, it's about space ...

    Captain Scarlet! Captain Scarlet! he's the one who knows ...

    Look at the muscles on those arms, they're like hammers! Look, it's that nut who flies around in pajamas!

    A nineteen-twenty-eight Porter, that's my mother dear.

    There's a scout troop short a child, Khruschev's due at Idlewild.

    People yakkety-yak a streak and waste your time of day.

    We get the funniest looks from everyone we meet.

    Dobie wants a gal who's creamy, Dobie!

    Falling, falling, into the hat he fell, spinning, turning, whirling, twirling...Down! Down!

    But you gotta love the Animaniacs take on "Mary Tyler Moore":

    Who can turn the stove on with her smile? Who can take a bubble bath And suddenly fill it with crocodiles?

Leave a comment on “The Regex Code Review”

Log In or post as a guest

Replying to comment #:

« Return to Article