当前位置: 首页 > 面试题库 >

RegEx在具有换行符的两个字符串之间获取字符串

孙经艺
2023-03-14
问题内容

我有以下测试(格式如下):

<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.Sre.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    ']


 类似资料:
  • 问题内容: 我需要从两个字符之间获取字符串。我有这个 并且必须在一个变量中分别返回4个字符串: 问题答案: 有。由于它接受正则表达式字符串,并且是正则表达式中的特殊字符,因此您需要对其进行转义(带有反斜杠)。而且,由于是在Java中字符串字面特殊字符,你需要逃脱 它 ,也一样,人们有时会感到迷惑。因此给出: 然后 将输出 ( 在 前三位上 有 尾随空格;如果需要,这些空格。)

  • 问题内容: 我从html解析中得到一个字符串,即 我的代码是这样的 我不确定我的第二个拆分字符串应该是“’”还是“’,” 我希望我的结果是 问题答案: 我将使用正则表达式从这样的复杂输入中提取子字符串。 Swift 3.1: Swift 2.0:

  • 问题内容: 假设我们有类似的东西: 我想将“ someText”替换为其他内容。考虑到我不知道someText可能是什么(任何字符串)并且我所知道的是它将被&firstString =和&endString =包围的事实,最佳方法是什么? 编辑:对不起,看起来这还不够清楚。我不知道“ someText”可能是什么,我仅有的信息是它将位于&firstString =和&endString =之间 我

  • 问题内容: 我尝试获取<%=和%>之间的字符串,这是我的实现: 它返回 但我的期望是: 我在哪里错了以及如何纠正它? 问题答案: 您的模式很好。但是,您不应该轻信它,应该这样做。以下代码提供了您正在寻找的输出:

  • 问题内容: 我试图从一个较大的字符串中提取一个字符串,使它在’:’和’;’之间得到一切。 当前 期望的输出 问题答案: 你可以试试这个

  • 问题内容: 我想删除两个字符之间以及字符本身之间的字符串,例如说: 我想替换“#?”之间所有出现的字符串 和“;” 并用字符将其删除。 由此 对此 我怎么能用Java做到呢? 问题答案: 使用正则表达式: