“你好,我的名字是”乔“,我13岁。”
我希望正则表达式只打印出“Joe”,可以这样做吗?
答案 0 :(得分:2)
你没有提供你正在使用这个正则表达式的平台,但这是使用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]);
string(3) "Joe"
答案 1 :(得分:2)
(?<!"[^"]*)"([^"]+)"
考虑这个字符串(使用\ escaped quotes): string test =“\”你好,我的名字是“乔”,我13岁。\“”;
该表达式将与"Joe"
匹配,第一次捕获将为Joe
。我无法分辨你试图从你的问题中得到什么。
在C#中:
var match = Regex.Match(mystring,
"(?<!\"[^\"]*)\"([^\"]+)\"",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
Console.WriteLine(match.Value); // "Joe"
Console.WriteLine(match.Groups[1].Value); // Joe
答案 2 :(得分:2)
一个正则表达式,它将在另一个带引号的字符串中找到带引号的字符串:
/\".*?\"(.*)\".*?\"/
http://rubular.com/r/L8dMtNZxP5
内部引用的字符串将位于\ 1。
现在,如果你想要一个更复杂的嵌套结构,你需要额外的逻辑来解释它。链接的网站可以帮助您生成任何进一步的逻辑。
答案 3 :(得分:1)
这是使用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"'