Python/Regex: Difference between revisions
< Python
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 | 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 = | 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) |