首先是代码:
str = "(suf) some text here (stuff here)"
r = re.split(r"(?<=[\)]) (?=[\w\(])", str)
这是我用来解析格式化文件的一些代码的示例。我基本上试图得到('suf','some text here (stuff here)')
作为结果。我已经尝试了各种排列,但它一直给我的是整个字符串。
答案 0 :(得分:1)
您正在拆分字符串,而不是捕获内部匹配项。
如果你想在第一个括号中捕获字符串,将其他所有内容捕获到两个对象中,这可以与match
一起使用(也可以使用split,这就是我要这样做的方式):
str = "(suf) some text here (stuff here)"
# capture anything inside first set of brackets
# then capture everything else, dropping any spaces between them
r = re.match(r"^\((.*?)\)\s*(.*)", str)
r.groups()
r.group(1) # group(0) is the full original string
r.group(2)