我必须在/*Custom-D Start*/
和/*Custom-D End*/
之间提取文字,并且/*
之后可能有空格,*/
之前可能有空格
我在两步中做到了这一点:
以下是我的代码:
data ="""/* Highlighting edits text on TIB ONLY and NOT ON PDF Output.
.main-igp selector makes this style apply only for TIB. */
.main-igp .edit1 {color: rgb(235, 127, 36)}
.main-igp .edit2 {color: rgb(0, 0, 180);}
/*Custom-D Start */
.main-igp .edit3 {color: rgb(0, 180, 180);}
.main-igp .edit6 {color: rgb(200, 200, 0);}
/* Custom-D End */
/* Production Note ===== */
p.production-note-rw {
display: none;}
/* Production Note END ===== */"""
def extractCustomD():
""" Extract Custom-D block from a CSS data.
Starting text is /*Custom-D Start*/
and ending text is /*Custom-D End*/
There are may be space after /* and also before */
"""
import re
try:
start_text = re.findall("/\* *Custom-D Start *\*", data)[0]
end_text = re.findall("/\* *Custom-D End *\*", data)[0]
except IndexError:
return ""
return data[data.find(start_text)+len(start_text):data.find(end_text)]
我们可以从正则表达式中提取目标内容吗?或者还有其他方法可以做到这一点吗?
修改:以下内容适用于我
>>> re.findall("/\* *Custom-D Start *\*/([\s\S]*)/\* Custom-D End \*/", data)
['\n.main-igp .edit3 {color: rgb(0, 180, 180);}\n.main-igp .edit6 {color: rgb(200, 200, 0);}\n']
答案 0 :(得分:1)
目前,您只需提取/*Custom-D Start */
和/* Custom-D End */
子字符串。但是,它们之间需要文本。
您可以使用一个正则表达式来提取子字符串:
/\* *Custom-D Start *\*/\s*(.*?)/\* *Custom-D End *\*/
见regex demo。将其与re.S
修饰符一起使用。
请参阅IDEONE demo:
import re
p = re.compile(r'/\* *Custom-D Start *\*/\s*(.*?)/\* *Custom-D End *\*/', re.DOTALL)
test_str = "/* Highlighting edits text on TIB ONLY and NOT ON PDF Output. \n .main-igp selector makes this style apply only for TIB. */\n.main-igp .edit1 {color: rgb(235, 127, 36)}\n.main-igp .edit2 {color: rgb(0, 0, 180);}\n/*Custom-D Start */\n.main-igp .edit3 {color: rgb(0, 180, 180);}\n.main-igp .edit6 {color: rgb(200, 200, 0);}\n/* Custom-D End */\n/* Production Note ===== */\np.production-note-rw {\n display: none;}\n/* Production Note END ===== */"
m = p.search(test_str)
if m:
print(m.group(1))
请注意,您可以展开与
匹配的延迟点/\* *Custom-D Start *\*/\s*([^/]*(?:/(?!\* *Custom-D End *\*/)[^/]*)*)
This version比具有延迟点匹配的更快。