使用正则表达式匹配Python中具有波浪号的模式

时间:2018-12-21 05:01:27

标签: regex python-3.x

我正在尝试使用正则表达式从Python这样的~~o3i320-4fjkhe~~模式中提取内容。

我尝试了以下方法:

pattern1 = r'\~\~(.*?)\~\~'
pattern2 = r'~~(.*?)~~'
m = re.search(pattern2, text)

print(m.group()[2:-2])

pattern1pattern2均无效。我是正则表达式的新手,正在为此而苦苦挣扎。不太确定我在这里缺少什么。任何帮助是极大的赞赏!谢谢!

1 个答案:

答案 0 :(得分:2)

您错误地访问了比赛。您要访问第一个捕获组:

text = "~~o3i320-4fjkhe~~"
pattern = r'\~\~(.*?)\~\~'
m = re.search(pattern, text)

print(m.group(1))
print(m.group(1)[2:-2])

o3i320-4fjkhe
i320-4fjk

更新:如果您真的想使用完全匹配,我们可以尝试在模式中使用环视:

text = "~~o3i320-4fjkhe~~"
pattern = r'(?<=~~)(.*)(?=~~)'
m = re.search(pattern, text)
print(m.group())

o3i320-4fjkhe