我现在的正则表达式是:
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]
我认为使用美元符号是导致我出现问题的原因。我显然不太熟悉使用正则表达式,所以如果有人可以帮助我那将是伟大的。我对任何解决方案持开放态度,包括但不限于其他python模块,内置python字符串功能等。
感谢您的帮助,
答案 0 :(得分:1)
我认为您可以使用"hello\s*\((.+)\)\s*{"
import re
text = "hello (hihihi(((())))hihi) { "
print re.match(r'hello\s*\((.+)\)\s*{', text).group(1)
给了我
hihihi(((())))hihi
您不需要?
和$
。
答案 1 :(得分:1)
尝试将正则表达式更改为以下内容:
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