Wildcards for regexps?

Discussion in 'Python' started by ssecorp, Aug 11, 2008.

  1. ssecorp

    ssecorp Guest

    If I have an expression like "bob marley" and I want to match
    everything with one letter wrong, how would I do?
    so "bob narely" and "vob marley" should match etc.
    ssecorp, Aug 11, 2008
    #1
    1. Advertising

  2. ssecorp

    Paul McGuire Guest

    On Aug 10, 11:10 pm, ssecorp <> wrote:
    > If I have an expression like "bob marley" and I want to match
    > everything with one letter wrong, how would I do?
    > so "bob narely" and "vob marley" should match etc.


    At first, I was going to suggest the brute force solution:

    ".ob marley|b.b marley|bo. marley|bob.marley|bob .arley|bob m.rley|bob
    ma.ley|bob mar.ey|bob marl.y|bob marle."

    But then I realized that after matching the initial 'b', later
    alternative matches wouldn't need to keep retesting for a leading 'b',
    so here is a recursive re that does not go back to match previously
    matched characters:

    ".ob marley|b(.b marley|o(. marley|b(.marley| (.arley|m(.rley|a(.ley|
    r(.ey|l(.y|e.))))))))"

    Here are some functions to generate these monstrosities:

    base = "bob marley"

    def makeOffByOneMatchRE(s):
    return "|".join(s[:i]+'.'+s[i+1:] for i in range(len(s)))
    re_string = makeOffByOneMatchRE(base)
    print re_string

    def makeOffByOneMatchRE(s,i=0):
    if i==len(s)-2:
    return '.' + s[-1] + '|' + s[-2] + '.'
    return '.' + s[i+1:] + '|' + s + '(' + makeOffByOneMatchRE(s,i
    +1) + ')'
    re_string = makeOffByOneMatchRE(base)
    print re_string


    -- Paul
    Paul McGuire, Aug 11, 2008
    #2
    1. Advertising

  3. Diez B. Roggisch, Aug 11, 2008
    #3
  4. On Sun, Aug 10, 2008 at 9:10 PM, ssecorp <> wrote:
    > If I have an expression like "bob marley" and I want to match
    > everything with one letter wrong, how would I do?
    > so "bob narely" and "vob marley" should match etc.


    At one point I needed something like this so did a straight port of
    the double-metaphone code to python.

    It's horrible, it's ugly, it's non-pythonic in ways that make me
    cringe, it has no unit tests, but it does work.

    --
    Stand Fast,
    tjg. [Timothy Grant]
    Timothy Grant, Aug 11, 2008
    #4
  5. ssecorp

    Aahz Guest

    In article <>,
    ssecorp <> wrote:
    >
    >If I have an expression like "bob marley" and I want to match
    >everything with one letter wrong, how would I do?
    >so "bob narely" and "vob marley" should match etc.


    difflib
    --
    Aahz () <*> http://www.pythoncraft.com/

    Adopt A Process -- stop killing all your children!
    Aahz, Aug 12, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Thomas F. O'Connell

    Negative Lookbehind and Wildcards

    Thomas F. O'Connell, Feb 27, 2004, in forum: Perl
    Replies:
    1
    Views:
    713
    Gunnar Hjalmarsson
    Feb 28, 2004
  2. DotNetJunkies User

    DataView filters with wildcards

    DotNetJunkies User, May 24, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    539
    DotNetJunkies User
    May 24, 2004
  3. msnews.microsoft.com
    Replies:
    0
    Views:
    1,144
    msnews.microsoft.com
    Jul 18, 2004
  4. Josh Martin
    Replies:
    6
    Views:
    1,847
    Josh Martin
    Nov 23, 2003
  5. Dale
    Replies:
    1
    Views:
    1,030
    Wendy S
    Jan 23, 2004
Loading...

Share This Page