In [1]:
import re

In [7]:
from __future__ import print_function
from ipywidgets import interact
import ipywidgets as widgets

Examples

search() vs match()


In [31]:
def imatch(pattern:str="c", string:str="abcde", multiline:bool=False):
    flags = {}
    if multiline:
        flags = {'flags': re.MULTILINE}
    m = re.match(pattern, string, **flags)
    if m:
        return m.group(), m.groups()
    return "Not match"

In [32]:
interact(imatch, pattern='c', string=widgets.Textarea("abcde"), multiline=False)


'Not match'

In [35]:
def isearch1(pattern:str="c", string:str="abcde", multiline:bool=False):
    flags = {}
    if multiline:
        flags = {'flags': re.MULTILINE}
    m = re.search(pattern, string, **flags)
    if m:
        return m, m.group(), m.groups()
    return "Not search"

In [36]:
interact(isearch1, pattern='c', string=widgets.Textarea("Cat\ncat\nbat"), multiline=False)


(<_sre.SRE_Match object; span=(4, 6), match='ca'>, 'ca', ('ca',))

In [39]:
def isearch2(pattern:str="c", string:str="abcde", multiline:bool=False):
    flags = {}
    if multiline:
        flags = {'flags': re.MULTILINE|re.DOTALL}
    m = re.search(pattern, string, **flags)
    if m:
        return m, m.group(), m.groups()
    return "Not search"

In [40]:
interact(isearch2, pattern='c', string=widgets.Textarea("Cat\ncat\nbat"), multiline=True)


(<_sre.SRE_Match object; span=(4, 7), match='cat'>, 'cat', ('cat',))