Regex 如何找到带有正则表达式的嵌套引号?

Regex 如何找到带有正则表达式的嵌套引号?,regex,Regex,“你好,我叫乔,今年13岁。” 我希望正则表达式只打印“Joe”,这可以做到吗?这里有一种非常通用的方法,可以使用Python的re模块在双引号中查找单个单词 >>> import re >>> string = '''"Hello my name is "Joe" and I'm 13"''' >>> re.compile('"\w+"').search(string) <_sre.SRE_Match object at 0xb73d

“你好,我叫乔,今年13岁。”


我希望正则表达式只打印“Joe”,这可以做到吗?

这里有一种非常通用的方法,可以使用Python的re模块在双引号中查找单个单词

>>> import re
>>> string = '''"Hello my name is "Joe" and I'm 13"'''
>>> re.compile('"\w+"').search(string)
<_sre.SRE_Match object at 0xb73dc720>
>>> _.group()
'"Joe"'
>>重新导入
>>>string=''''你好,我叫“乔”,我13岁''
>>>重新编译(“\w+”)。搜索(字符串)
>>>(组)
“乔”

您没有提供用于此正则表达式的平台,但这里有一种使用php的方法:

$content='Hello my name is "Joe" and I\'m 13.';
preg_match('/"[^"]*"/', $content, $m);
print_r($m);
更新: 根据下面的评论,这里是OP可能正在寻找的代码:

$content='foo "Hello my name is "Joe" and I\'m 13." bar';
preg_match('/"[^"]*"([^"]*)"/', $content, $m);
var_dump($m[1]);
输出
将在另一个带引号的字符串中查找带引号的字符串的正则表达式:

/\".*?\"(.*)\".*?\"/

内部带引号的字符串将位于\1中


现在,如果你想要一个更复杂的嵌套结构,你需要额外的逻辑来解释。链接的站点可以帮助您生成任何进一步的逻辑。

这在regex领域是一个相对简单的问题,可以用几种不同的方法解决。有大量的正则表达式教程,如果你想经常使用正则表达式,我建议你阅读其中的一个或多个(或者即使你不经常使用正则表达式,也只是为了你自己的学习经验)。是一个,也是另一个…你可以在谷歌上找到很多,只要搜索“正则表达式教程”:)这并不能回答问题…他想在另一个带引号的字符串中找到带引号的字符串,即(“blah“bleh”blah),而不是(blah“bleh”blah)@devyndraen:谢谢你的澄清,我已经根据你的评论更新了我的答案。
(?<!"[^"]*)"([^"]+)"
var match = Regex.Match(mystring,
            "(?<!\"[^\"]*)\"([^\"]+)\"",
            RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
Console.WriteLine(match.Value);            // "Joe"
Console.WriteLine(match.Groups[1].Value);  // Joe
/\".*?\"(.*)\".*?\"/