我的值是这样的:

"Foo Bar" "Another Value" something else

什么正则表达式将返回括在引号中的值(例如Foo Bar和Another Value)?


当前回答

一般来说,下面的正则表达式片段就是你要找的:

"(.*?)"

这使用了非贪婪的*?运算符来捕获下一个双引号之前的所有内容。然后,使用特定于语言的机制提取匹配的文本。

在Python中,你可以这样做:

>>> import re
>>> string = '"Foo Bar" "Another Value"'
>>> print re.findall(r'"(.*?)"', string)
['Foo Bar', 'Another Value']

其他回答

一般来说,下面的正则表达式片段就是你要找的:

"(.*?)"

这使用了非贪婪的*?运算符来捕获下一个双引号之前的所有内容。然后,使用特定于语言的机制提取匹配的文本。

在Python中,你可以这样做:

>>> import re
>>> string = '"Foo Bar" "Another Value"'
>>> print re.findall(r'"(.*?)"', string)
['Foo Bar', 'Another Value']
string = "\" foo bar\" \"loloo\""
print re.findall(r'"(.*?)"',string)

试试这个,就像一个魅力!!

\表示跳过字符

我的解决方案如下

(\[‘])。* 1 (? ! [s ^ \])

演示链接:https://regex101.com/r/jlhQhV/1

解释:

(["'])->匹配'或',一旦找到匹配,将其存储在反向引用\1中

.* ->贪婪的方法继续匹配所有内容0次或更多次,直到它在字符串末尾遇到'或"。遇到这种状态后,正则表达式引擎返回到上一个匹配字符,此时正则表达式结束,将移动到下一个正则表达式。

\1 ->匹配先前与第一个捕获组匹配的字符或字符串。

(?![^\s]) ->负前向,确保在之前的匹配之后不应该有任何非空格字符

很晚才回答,却喜欢回答

(\"[\w\s]+\")

http://regex101.com/r/cB0kB8/1

我能够创建这个正则表达式来满足我的需求。

我需要匹配一个包含引号的特定值。它必须是完全匹配的,没有部分匹配可以触发命中

如。“test”不能与“test2”匹配。

reg = r"""(['"])(%s)\1"""
if re.search(reg%(needle), haystack, re.IGNORECASE):
    print "winning..."

猎人