[英]How to write a regex in python to match this?
代碼如下:
#coding=utf-8
import re
str = "The output is\n"
str += "1) python\n"
str += "A dynamic language\n"
str += "easy to learn\n"
str += "2) C++\n"
str += "difficult to learn\n"
str += "3244) PHP\n"
str += "eay to learn\n"
pattern = r'^[1-9]+\) .*'
print re.findall(pattern,str,re.M)
輸出是
['1) python', '2) C++', '3244) PHP']
但是,我想將它拆分為:
['1) python\n'A dynamic language\n easy to learn\n' 2) C++\n difficult to learn\n', '3244) PHP\n easy to learn\n']
也就是說,忽略第一行不以“數字”開頭,並且當遇到一個數字時,以下行直到下一行以“數字”開頭“被認為是同一組。 我該如何重寫模式?
>>> import re
>>> strs = 'The output is\n1) python\nA dynamic language\neasy to learn\n2) C++\ndifficult to learn\n3244) PHP\neay to learn\n'
>>> re.findall(r'\d+\)\s[^\d]+',strs)
['1) python\nA dynamic language\neasy to learn\n',
'2) C++\ndifficult to learn\n',
'3244) PHP\neay to learn\n']
你可以使用這個,允許數字,但后面沒有右括號:
re.findall(r'\d+\)\s(?:\D+|\d+(?!\d*\)))*',str)
您需要將空白的python正則表達式添加到模式中以考慮換行符。
試試這個:
regex = r"[1-9]+\) .*\s.*"
\\ s是任何空格的正則表達式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.