繁体   English   中英

Python Regex,查找两个子串之间的内容

[英]Python Regex, Finding what is in between two substrings

我现在的正则表达式是:

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字符串功能等。

谢谢你的帮助,

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

import re

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

给我

hihihi(((())))hihi

你不需要? $

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM