[英]Python Regex split (A)(B)(C)(D) into new lines
I write a regex to separate choices into new lines, 我写了一个正则表达式将选项分成新行,
(?P<qn>^\d+)\s*?\.(?P<qt>.*?)\s*?(?P<A>A\s*?\..*?)\n*?(?P<B>B\s*?\..*?)\n*?(?P<C>C\s*?\..*?)\n*?(?P<D>D\s*?\..*?)\n*(?=\Z)
See https://www.regex101.com/r/hP0nX4/2 参见https://www.regex101.com/r/hP0nX4/2
14.下列牙齒外傷,何者最易發生牙髓壞死?
A.震盪(concussion)
B.半脫臼(subluxation)
C.凸出性脫位(extrusive luxation)
D.內縮性脫位(intrusive luxation)
15 .藥物在正常使用下,何種藥品對
Enterococcus faecalis 的殺菌效果通常最快?
A.2.5%次氯酸鈉(NaOCl) B.0.5%chlorhexidine C.2%iodine/4%potassium iodide D.氫氧化鈣(Ca(OH)2)
16 .有關根管治療時使用EDTA移除塗抹層(smear layer)之敘述,下列何者錯誤?
A.臨床上常使用的EDTA濃度為27% B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 C.EDTA可深入牙本質小管約50µm D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層
The question No. 14 is well formatted, No.15 & 16 are not. 第14号问题的格式正确,第15号和16号问题的格式不正确。
My regex only match one question, how can I make it to match all questions. 我的正则表达式只匹配一个问题,我该如何匹配所有问题。 And separate all choices into new line?
并将所有选择都分成新行?
My expected output is: 我的预期输出是:
14.下列牙齒外傷,何者最易發生牙髓壞死?
A.震盪(concussion)
B.半脫臼(subluxation)
C.凸出性脫位(extrusive luxation)
D.內縮性脫位(intrusive luxation)
15 .藥物在正常使用下,何種藥品對
Enterococcus faecalis 的殺菌效果通常最快?
A.2.5%次氯酸鈉(NaOCl)
B.0.5%chlorhexidine
C.2%iodine/4%potassium iodide
D.氫氧化鈣(Ca(OH)2)
16 .有關根管治療時使用EDTA移除塗抹層(smear layer)之敘述,下列何者錯誤?
A.臨床上常使用的EDTA濃度為27%
B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層
C.EDTA可深入牙本質小管約50µm
D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層
Just repace the space which exists before B
or C
or D
.
只需掩盖
B
或C
或D
之前的空间即可.
with newline character. 与换行符。
re.sub(r'\s+(?=[BCD]\.)', '\n', s)
Example: 例:
>>> s = '''14.下列牙齒外傷,何者最易發生牙髓壞死?
A.震盪(concussion)
B.半脫臼(subluxation)
C.凸出性脫位(extrusive luxation)
D.內縮性脫位(intrusive luxation)
15 .藥物在正常使用下,何種藥品對
Enterococcus faecalis 的殺菌效果通常最快?
A.2.5%次氯酸鈉(NaOCl) B.0.5%chlorhexidine C.2%iodine/4%potassium iodide D.氫氧化鈣(Ca(OH)2)
16 .有關根管治療時使用EDTA移除塗抹層(smear layer)之敘述,下列何者錯誤?
A.臨床上常使用的EDTA濃度為27% B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層 C.EDTA可深入牙本質小管約50µm D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層'''
>>> print(re.sub(r'\s+(?=[BCD]\.)', '\n', s))
14.下列牙齒外傷,何者最易發生牙髓壞死?
A.震盪(concussion)
B.半脫臼(subluxation)
C.凸出性脫位(extrusive luxation)
D.內縮性脫位(intrusive luxation)
15 .藥物在正常使用下,何種藥品對
Enterococcus faecalis 的殺菌效果通常最快?
A.2.5%次氯酸鈉(NaOCl)
B.0.5%chlorhexidine
C.2%iodine/4%potassium iodide
D.氫氧化鈣(Ca(OH)2)
16 .有關根管治療時使用EDTA移除塗抹層(smear layer)之敘述,下列何者錯誤?
A.臨床上常使用的EDTA濃度為27%
B.其作用為EDTA與牙本質碎屑中的鈣離子螯合(chelating),來幫助移除塗抹層
C.EDTA可深入牙本質小管約50µm
D.EDTA與次氯酸鈉(NaOCl)併用可移除塗抹層
There is a newline before "Enterococcus" that is not matched by .
“ Enterococcus”之前有一个换行符,与不匹配
.
You can add the modifier s
to make .
您可以添加修改
s
做.
also match newlines. 也匹配换行符。
Note that the newline will still be in the result though. 注意,换行符仍然会出现在结果中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.