Home > database >  Match a literal dot and a new line in a text (regex)
Match a literal dot and a new line in a text (regex)

Time:07-24

I have the following text "DTMS - Specifiche\nL'utilizzo dei negativi su vetro si diffonde a partire dal 1850 circa ed \ninizia intorno al 1920.\nPagina \n3\n di \n4\nAU ".

I'd like to take all the text from L'utilizzo to .\n. I have tried with DTMS - Specifiche\n(. ?)\n but it ends when the code finds the first \n. I also tried with DTMS - Specifiche\n(. ?)[.]\n because I think that I need to escape the dot, but it doesn't work as I would.

Is there anyone who can figure it out?

CodePudding user response:

If you want to match till the first dot and a newline:

DTMS - Specifiche\n([\S\s]*?\.)\n

If you don't want the dot, you can move it outside of the capture group.

Regex demo

import re

pattern = r"DTMS - Specifiche\n([\S\s]*?)\.\n"

s = ("DTMS - Specifiche\n"
            "L'utilizzo dei negativi su vetro si diffonde a partire dal 1850 circa ed \n"
            "inizia intorno al 1920.\n"
            "Pagina \n"
            "3\n"
            " di \n"
            "4\n"
            "AU ")

m = re.search(pattern, s)
if m:
    print(m.group(1))

Output

L'utilizzo dei negativi su vetro si diffonde a partire dal 1850 circa ed 
inizia intorno al 1920.
  • Related