0

我正在尝试在几个函数中搜索 ("") 之间的文本。我一直在努力解决这个问题,我确信这很简单,但我无法理解。我有以下...

search = re.findall('/(functionOne|functionTwo)\(\"(.*?)\"', text, re.MULTILINE)

但它总是返回空白。如果我使用下面的代码,它将返回单个函数引号内的所有文本......

search = re.findall('functionOne\(\"(.*?)\"', text, re.MULTILINE)

示例输入就像这样......

functionOne("I want this text", iDontWantThis);
functionTwo("I also want this text");

示例输出将是...

I want this text
I also want this text

如何让它从 functionOne 和 functionTwo 返回所有文本?

4

1 回答 1

0

感谢您的澄清,这应该可以满足您的要求:它以非捕获或查找括号开始,搜索吸收所有内容直到它到达引号,抓住引号之间的所有内容,并确保它以结束括号结束.

>>> buff = """
... functionOne("I want this text", iDontWantThis);
... functionTwo("I also want this text");"""
>>> re.findall("(?:functionOne|functionTwo)\(.*?\"(.*?)\".*?\)",buff)
['I want this text', 'I also want this text']

如果你有这样的函数调用:

foo("hello, this is a very long
     string that needs to be less than
     80 characters", var1, var2)

您需要使用“re.S”来告诉“。” 运算符以包含换行符。

于 2013-04-12T14:25:15.797 回答