0

I have to remove the strings that start with "===" and also end with "===" (for example I have to replace the string "===Links===" with null string) in python. But the problem here is it can start with three "=" or four or any number of '='. I have tried to use the regex re.sub('[=]*.*?[=]*', '', string). But when it is run on "===Refs===", it is giving "Refs" as output instead of null string. Can you please suggest something for this?

Arkistarvh Kltzuonstev
  • 6,824
  • 7
  • 26
  • 56
  • Your description is a little confusing, but have you looked into [non-capturing groups?](https://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group-what-does-do) – vmg Mar 14 '19 at 10:33

3 Answers3

2
import re

string = '===Ref==='
pattern = r'^\=+.+\=+$'

string = re.sub(pattern, '', string)
RnD
  • 1,019
  • 5
  • 23
  • 49
  • 3
    @BhanuPrakashReddy glad to help, don't forget to accept the answer if this solved your problem – RnD Mar 14 '19 at 10:42
1

Too late :-(

import re
str = '===Links=== are great, but ===Refs=== bla bla == blub ===blub'

pattern = re.compile('=+\w+=+')
replaced = re.sub(pattern, '', str)
print(replaced)
Xenobiologist
  • 2,091
  • 1
  • 12
  • 16
0

.? suggests that you are only accepting no or a single character between your =s. Try changing it to .* to match multiple characters between =s.

Perhaps you can use str.startswith() and str.endswith() to find out if the string starts/ends with ===?

Moberg
  • 5,253
  • 4
  • 38
  • 54