简体   繁体   中英

How can I remove a specific character from multi line string using regex in python

I have a multiline string which looks like this:

st = '''emp:firstinfo\n
       :secondinfo\n
       thirdinfo
     '''
print(st)

What I am trying to do is to skip the second ':' from my string, and get an output which looks like this:

'''emp:firstinfo\n
   secondinfo\n
   thirdinfo
   '''

simply put if it starts with a ':' I'm trying to ignore it.

Here's what I've done:

mat_obj = re.match(r'(.*)\n*([^:](.*))\n*(.*)' , st)
print(mat_obj.group())

Clearly, I don't see my mistake but could anyone please help me telling where I am getting it wrong?

You may use re.sub with this regex:

>>> print (re.sub(r'([^:\n]*:[^:\n]*\n)\s*:(.+)', r'\1\2', st))
emp:firstinfo
secondinfo

       thirdinfo

RegEx Demo

RegEx Details:

  • ( : Start 1st capture group
    • [^:\n]* : Match 0 or more of any character that is not : and newline
    • : : Match a colon
    • [^:\n]* : Match 0 or more of any character that is not : and newline
    • \n : Match a new line
  • ) : End 1st capture group
  • \s* : Match 0 or more whitespaces
  • : : Match a colon
  • (.+) : Match 1 or more of any characters (except newlines) in 2nd capture group
  • \1\2 : Is used in replacement to put back substring captured in groups 1 and 2.

You can use sub instead, just don't capture the undesired part.

(.*\n)[^:]*:(.*\n)(.*)

在此处输入图像描述

Replace by

\1\2\3

Regex Demo


import re

regex = r"(.*\n)[^:]*:(.*\n)(.*)"

test_str = ("emp:firstinfo\\n\n"
    "       :secondinfo\\n\n"
    "       thirdinfo")

subst = "\\1\\2\\3"

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
#import regex library

import re

#remove character in a String and replace with empty string. 

text = "The film Pulp Fiction was released in year 1994" result = re.sub(r"[az]", "", text) print(result)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM