为了账号安全,请及时绑定邮箱和手机立即绑定

使用python正则表达式提取两个不同字符之间的子字符串

使用python正则表达式提取两个不同字符之间的子字符串

一只甜甜圈 2021-05-20 15:10:16
我想使用python正则表达式提取两个不同字符>和<之间的子字符串。这是我的示例字符串:<h4 id="Foobar:">Foobar:</h4><h1 id="Monty">Python<a href="https://..."></a></h1>我当前的正则表达式是\>(.*)\<和匹配:FoobarPython<a href="https://..."></a>我重新正确匹配第一个示例,但不匹配第二个示例。我希望它返回“ Python”。我想念什么?
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

使用表达式:

(?<=>)[^<:]+(?=:?<)
  • (?<=>)积极回首>

  • [^<:]+匹配<或以外的其他任何内容:

  • (?=:?<)积极向前展望可选冒号:,和<

您可以在此处尝试使用该表达式。

在Python中:

import re

first_string = '<h4 id="Foobar:">Foobar:</h4>'

second_string = '<h1 id="Monty">Python<a href="https://..."></a></h1>'


print(re.findall(r'(?<=>)[^<:]+(?=:?<)',first_string)[0])

print(re.findall(r'(?<=>)[^<:]+(?=:?<)',second_string)[0])

印刷:


Foobar

Python

或者,您可以使用表达式:


(?<=>)[a-zA-Z]+(?=\W*<)

  • (?<=>)积极回首>

  • [a-zA-Z]+ 小写和大写字母。

  • (?=\W*<)正向查找所有非单词字符,后跟<

您可以在此处测试此表达式。

print(re.findall(r'(?<=>)[a-zA-Z]+(?=\W*<)',first_string)[0])
print(re.findall(r'(?<=>)[a-zA-Z]+(?=\W*<)',second_string)[0])

印刷:

Foobar
Python


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 444 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信