Python/Regex: Difference between revisions

From Fundamental Ramen
Jump to navigation Jump to search
(Created page with "= To Match = <source lang="python"> if re.search(pattern, subject): pass m = re.match(pattern, subject) if m: pass </source> = To Replace = <source lang="python"> ns...")
 
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
= To Match =
= To Match =
<source lang="python">
<source lang="python">
if re.search(pattern, subject):
import re
     pass
 
sample1 = '2018-05-31'
sample2 = 'Today is 2018-51-31.'
pattern = re.compile('(\d{4})-(\d{2})-(\d{2})')
 
m = pattern.search(sample1)
if m:
    print('Found pattern in sample1 between {}~{}.'.format(m.span()[0], m.span()[1]))
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))
 
m = pattern.search(sample2)
if m:
    print('Found pattern in sample1 between {}~{}.'.format(m.span()[0], m.span()[1]))
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))
 
m = pattern.match(sample1)
if m:
     print('Matched pattern sample1.')
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))


m = re.match(pattern, subject)
m = pattern.match(sample2)
if m:
if m:
    # won't be matched
     pass
     pass
</source>
</source>
* Cannot use with pattern.search(...) as m.
* Cannot use with pattern.match(...) as m.


= To Replace =
= To Replace =
<source lang="python">
<source lang="python">
ns = re.sub('o+', '_', 'doooooog')
ns = re.sub('o+', '_', 'doooooog')
re.sub(r'(\d{4})(\d{2})(\d{2})', r'\1-\2-\3', csv_date)
</source>
</source>
= Trouble shooting =
{| class="wikitable"
! Error || Solution
|-
| TypeError: '_sre.SRE_Match' object is not subscriptable || m[1] -> m.group(1)
|}

Latest revision as of 09:11, 4 June 2019

To Match

import re

sample1 = '2018-05-31'
sample2 = 'Today is 2018-51-31.'
pattern = re.compile('(\d{4})-(\d{2})-(\d{2})')

m = pattern.search(sample1)
if m:
    print('Found pattern in sample1 between {}~{}.'.format(m.span()[0], m.span()[1]))
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))

m = pattern.search(sample2)
if m:
    print('Found pattern in sample1 between {}~{}.'.format(m.span()[0], m.span()[1]))
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))

m = pattern.match(sample1)
if m:
    print('Matched pattern sample1.')
    print('m[1]={}, m[2]={}, m[3]={}'.format(m[1], m[2], m[3]))

m = pattern.match(sample2)
if m:
    # won't be matched
    pass
  • Cannot use with pattern.search(...) as m.
  • Cannot use with pattern.match(...) as m.

To Replace

ns = re.sub('o+', '_', 'doooooog')
re.sub(r'(\d{4})(\d{2})(\d{2})', r'\1-\2-\3', csv_date)

Trouble shooting

Error Solution
TypeError: '_sre.SRE_Match' object is not subscriptable m[1] -> m.group(1)