|
| 1 | +import re |
| 2 | + |
| 3 | +# matching string |
| 4 | +pattern1 = "cat" |
| 5 | +pattern2 = "bird" |
| 6 | +string = "dog runs to cat" |
| 7 | +print(pattern1 in string) # True |
| 8 | +print(pattern2 in string) # False |
| 9 | + |
| 10 | + |
| 11 | +# regular expression |
| 12 | +pattern1 = "cat" |
| 13 | +pattern2 = "bird" |
| 14 | +string = "dog runs to cat" |
| 15 | +print(re.search(pattern1, string)) # <_sre.SRE_Match object; span=(12, 15), match='cat'> |
| 16 | +print(re.search(pattern2, string)) # None |
| 17 | + |
| 18 | + |
| 19 | +# multiple patterns ("run" or "ran") |
| 20 | +ptn = r"r[au]n" # start with "r" means regular expression |
| 21 | +print(re.search(ptn, "dog runs to cat")) # <_sre.SRE_Match object; span=(4, 7), match='run'> |
| 22 | + |
| 23 | + |
| 24 | +# continue |
| 25 | +print(re.search(r"r[A-Z]n", "dog runs to cat")) # None |
| 26 | +print(re.search(r"r[a-z]n", "dog runs to cat")) # <_sre.SRE_Match object; span=(4, 7), match='run'> |
| 27 | +print(re.search(r"r[0-9]n", "dog r2ns to cat")) # <_sre.SRE_Match object; span=(4, 7), match='r2n'> |
| 28 | +print(re.search(r"r[0-9a-z]n", "dog runs to cat")) # <_sre.SRE_Match object; span=(4, 7), match='run'> |
| 29 | + |
| 30 | + |
| 31 | +# \d : decimal digit |
| 32 | +print(re.search(r"r\dn", "run r4n")) # <_sre.SRE_Match object; span=(4, 7), match='r4n'> |
| 33 | +# \D : any non-decimal digit |
| 34 | +print(re.search(r"r\Dn", "run r4n")) # <_sre.SRE_Match object; span=(0, 3), match='run'> |
| 35 | +# \s : any white space [\t\n\r\f\v] |
| 36 | +print(re.search(r"r\sn", "r\nn r4n")) # <_sre.SRE_Match object; span=(0, 3), match='r\nn'> |
| 37 | +# \S : opposite to \s, any non-white space |
| 38 | +print(re.search(r"r\Sn", "r\nn r4n")) # <_sre.SRE_Match object; span=(4, 7), match='r4n'> |
| 39 | +# \w : [a-zA-Z0-9_] |
| 40 | +print(re.search(r"r\wn", "r\nn r4n")) # <_sre.SRE_Match object; span=(4, 7), match='r4n'> |
| 41 | +# \W : opposite to \w |
| 42 | +print(re.search(r"r\Wn", "r\nn r4n")) # <_sre.SRE_Match object; span=(0, 3), match='r\nn'> |
| 43 | +# \b : empty string (only at the start or end of the word) |
| 44 | +print(re.search(r"\bruns\b", "dog runs to cat")) # <_sre.SRE_Match object; span=(4, 8), match='runs'> |
| 45 | +# \B : empty string (but not at the start or end of a word) |
| 46 | +print(re.search(r"\B runs \B", "dog runs to cat")) # <_sre.SRE_Match object; span=(8, 14), match=' runs '> |
| 47 | +# \\ : match \ |
| 48 | +print(re.search(r"runs\\", "runs\ to me")) # <_sre.SRE_Match object; span=(0, 5), match='runs\\'> |
| 49 | +# . : match anything (except \n) |
| 50 | +print(re.search(r"r.n", "r[ns to me")) # <_sre.SRE_Match object; span=(0, 3), match='r[n'> |
| 51 | +# ^ : match line beginning |
| 52 | +print(re.search(r"^dog", "dog runs to cat")) # <_sre.SRE_Match object; span=(0, 3), match='dog'> |
| 53 | +# $ : match line ending |
| 54 | +print(re.search(r"cat$", "dog runs to cat")) # <_sre.SRE_Match object; span=(12, 15), match='cat'> |
| 55 | +# ? : may or may not occur |
| 56 | +print(re.search(r"Mon(day)?", "Monday")) # <_sre.SRE_Match object; span=(0, 6), match='Monday'> |
| 57 | +print(re.search(r"Mon(day)?", "Mon")) # <_sre.SRE_Match object; span=(0, 3), match='Mon'> |
| 58 | + |
| 59 | + |
| 60 | +# multi-line |
| 61 | +string = """ |
| 62 | +dog runs to cat. |
| 63 | +I run to dog. |
| 64 | +""" |
| 65 | +print(re.search(r"^I", string)) # None |
| 66 | +print(re.search(r"^I", string, flags=re.M)) # <_sre.SRE_Match object; span=(18, 19), match='I'> |
| 67 | + |
| 68 | + |
| 69 | +# * : occur 0 or more times |
| 70 | +print(re.search(r"ab*", "a")) # <_sre.SRE_Match object; span=(0, 1), match='a'> |
| 71 | +print(re.search(r"ab*", "abbbbb")) # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'> |
| 72 | + |
| 73 | +# + : occur 1 or more times |
| 74 | +print(re.search(r"ab+", "a")) # None |
| 75 | +print(re.search(r"ab+", "abbbbb")) # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'> |
| 76 | + |
| 77 | +# {n, m} : occur n to m times |
| 78 | +print(re.search(r"ab{2,10}", "a")) # None |
| 79 | +print(re.search(r"ab{2,10}", "abbbbb")) # <_sre.SRE_Match object; span=(0, 6), match='abbbbb'> |
| 80 | + |
| 81 | + |
| 82 | +# group |
| 83 | +match = re.search(r"(\d+), Date: (.+)", "ID: 021523, Date: Feb/12/2017") |
| 84 | +print(match.group()) # 021523, Date: Feb/12/2017 |
| 85 | +print(match.group(1)) # 021523 |
| 86 | +print(match.group(2)) # Date: Feb/12/2017 |
| 87 | + |
| 88 | +# findall |
| 89 | +print(re.findall(r"r[ua]n", "run ran ren")) # ['run', 'ran'] |
| 90 | + |
| 91 | +# | : or |
| 92 | +print(re.findall(r"(run|ran)", "run ran ren")) # ['run', 'ran'] |
| 93 | + |
| 94 | + |
| 95 | + |
0 commit comments