Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Regex for matching n-fold repititions of arbitrary characters

by pat_mc (Pilgrim)
on Oct 08, 2009 at 18:53 UTC ( #800066=perlquestion: print w/replies, xml ) Need Help??
pat_mc has asked for the wisdom of the Perl Monks concerning the following question:

Hi, Monks -

I used to think of myself as reasonably proficient in the domain of regular expressions (maybe I should be treading carefully around here with that kind of claim)...until I recently wanted to scan one of my documents for multiple occurrences of arbitrary characters. Specifically, I wanted to see if, by accident, any character triplets were contained (such as in 'fullly').

Here's the question: What would a regex be to match all the misspell(l)t words? Clearly, /.{3}/ won't do the trick. I guess it needs to be a conditional thing such that, once it matches a character, it goes on to check whether the next two characters are the same. However, I have no idea how to code that.

Your help would be much appreciated.

Thanks in advance -


Replies are listed 'Best First'.
Re: Regex for matching n-fold repititions of arbitrary characters
by ikegami (Pope) on Oct 08, 2009 at 18:59 UTC
      Thanks, ikegami ... I knew there should be an easy way to do it ... but had not used backreferences in regexes before.

      One follow-up to your post: Is the s modifier really required?

      Thanks again!

        Depends on what you want /./ to match. If you want to match repetitions of any character, yes. If you want to match repetitions of specific characters, no, since you won't be using /./.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://800066]
Approved by ikegami
and dust plays in a shaft of sunlight...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (11)
As of 2018-06-22 20:01 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (124 votes). Check out past polls.