Search code examples
pythonregexword-boundaries

Do regular expressions from the re module support word boundaries (\b)?


While trying to learn a little more about regular expressions, a tutorial suggested that you can use the \b to match a word boundary. However, the following snippet in the Python interpreter does not work as expected:

>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)

It should have been a match object if anything was matched, but it is None.

Is the \b expression not supported in Python or am I using it wrong?


Solution

  • You should be using raw strings in your code

    >>> x = 'one two three'
    >>> y = re.search(r"\btwo\b", x)
    >>> y
    <_sre.SRE_Match object at 0x100418a58>
    >>> 
    

    Also, why don't you try

    word = 'two'
    re.compile(r'\b%s\b' % word, re.I)
    

    Output:

    >>> word = 'two'
    >>> k = re.compile(r'\b%s\b' % word, re.I)
    >>> x = 'one two three'
    >>> y = k.search( x)
    >>> y
    <_sre.SRE_Match object at 0x100418850>