Python正则表达式,查找两个子字符串之间的内容

2024-04-20 09:09:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在的正则表达式是:

string="hello (fdd()()()()(()(())()))"
re.match("%s\s*\((.*?)\)$"%re.escape("hello"), string)

它将很好地工作,它的目标是得到括号内的任何东西。 在这种情况下:"fdd()()()()(()(())())"

我想做一个修改,正则表达式应该与这个测试用例一起工作

"hello (hihihi(((())))hihi) { "

它的末端有一个大括号。在给定字符串的末尾应该总是有一个大括号,因此我向您展示的第一个测试用例将不再工作(使用我想要的新正则表达式)。你知道吗

试着这样看

hello[any amount of space]([get WHATEVER is inside here])[any amount of space]{[any amount of space]

我认为使用美元符号是给我带来麻烦的原因。我显然不太熟悉使用regex,所以如果有人能帮我,那就太好了。我对任何解决方案都持开放态度,包括但不限于其他python模块、内置python字符串特性等。你知道吗

谢谢你的帮助


Tags: of字符串rehello目标stringmatch测试用例
2条回答

尝试将正则表达式更改为以下内容:

r"%s\s*\((.*?)\)\s*{" % re.escape("hello")

这里唯一的区别是$\s*{替换,这意味着任何数量的空格后面都有一个{。你知道吗

示例:

>>> s = "hello (hihihi(((())))hihi) { "
>>> print re.match(r"%s\s*\((.*?)\)\s*{" % re.escape("hello"), s).group(1)
hihihi(((())))hihi

我想你可以用"hello\s*\((.+)\)\s*{"

import re

text = "hello (hihihi(((())))hihi) { "
print re.match(r'hello\s*\((.+)\)\s*{', text).group(1)

给了我

hihihi(((())))hihi

你不需要?$。你知道吗

相关问题 更多 >