我有以下测试(格式如下):
<td scope="row" align="left"> My Class: TEST DATA<br> Test Section: <br> MY SECTION<br> MY SECTION 2<br> </td>
我正在尝试获取“测试部分:”和“我的部分”之后的文本
我用不同的RegEx模式进行了几次尝试,但结果一无所获。
如果我做:
(?<=Test)(.*?)(?=<br)
然后,我得到正确的答复:
' Section: '
但是,如果我这样做
(?<=Test)(.*?)(?=</td>)
我没有结果。结果应为“我的第二 部分 ”
我也尝试过使用RegEx Multiline,但没有结果。
任何帮助,将不胜感激。
如果重要的话,我正在Python 2.7中进行编码。
如果不清楚,或者您需要更多信息,请告诉我。
使用re.S或re.DOTALL标志。或在正则表达式前加上(?s)来.匹配所有字符(包括换行符)。
re.S
re.DOTALL
(?s)
.
没有标志,.不匹配换行符。
(?s)(?<=Test)(.*?)(?=</td>)
例:
>>> s = '''<td scope="row" align="left"> ... My Class: TEST DATA<br> ... Test Section: <br> ... MY SECTION<br> ... MY SECTION 2<br> ... </td>''' >>> >>> import re >>> re.findall('(?<=Test)(.*?)(?=</td>)', s) # without flags [] >>> re.findall('(?<=Test)(.*?)(?=</td>)', s, flags=re.S) [' Section: <br>\n MY SECTION<br>\n MY SECTION 2<br>\n '] >>> re.findall('(?s)(?<=Test)(.*?)(?=</td>)', s) [' Section: <br>\n MY SECTION<br>\n MY SECTION 2<br>\n ']