正则表达式删除嵌套的双引号?

时间:2013-12-21 15:45:49

标签: regex

如何解析带有可变数量的双引号的字符串中的文本?

例如,我可能会遇到这个字符串:

"""The Cellar """"Serene"""" 16-Piece Glassware Set"""

或此字符串等......:

""The Cellar """Serene""" 16-Piece Glassware Set""

我想显示这个字符串:

The Cellar "Serene" 16-Piece Glassware Set

似乎正则表达式在这里是理想的解决方案,因为有一种模式。在所有情况下,前n个双引号定义模式。我想输出字符串的余额。

3 个答案:

答案 0 :(得分:2)

如果您可以提供有关您正在使用的语言的更多详细信息,那么它将有助于解决任何正则表达式的特定问题。我提供了一个小的递归函数来解决你在javascript中的问题。

var string = '"""The Cellar """"Serene"""" 16-Piece Glassware Set"""';
var result;
function removeExcessQuotes(str)
{
    var match = str.replace('""', '"');
    result = match;
    if(match.indexOf('""') != -1)
    {
        result = match;
        removeExcessQuotes(match);
    }

    return result;
}

console.log(removeExcessQuotes(string));

答案 1 :(得分:0)

代码将根据您使用的编程语言(PHP,Perl,JavaScript等)而有所不同,但逻辑和正则表达式将是相同的。搜索"{2,}。这会设置你的模式,所以得到匹配字符串的长度。然后通过搜索"{n}并替换为空字符串来执行替换,其中n是第一个匹配的长度。

答案 2 :(得分:0)

试试这段代码 -

str="\"\"\"The Cellar \"\"\"\"Serene\"\"\"\" 16-Piece Glassware Set\"\"\"";
replace_regexp=new RegExp(str.match(/"*/)[0], "g");
str=str.replace(replace_regexp, '');
console.log(str);

O / P

The Cellar "Serene" 16-Piece Glassware Set

N.B。此代码基本上在字符串"的开头检索str的no,然后在递归中删除整个字符串中的"的等号。

相关问题