如何解析带有可变数量的双引号的字符串中的文本?
例如,我可能会遇到这个字符串:
"""The Cellar """"Serene"""" 16-Piece Glassware Set"""
或此字符串等......:
""The Cellar """Serene""" 16-Piece Glassware Set""
我想显示这个字符串:
The Cellar "Serene" 16-Piece Glassware Set
似乎正则表达式在这里是理想的解决方案,因为有一种模式。在所有情况下,前n个双引号定义模式。我想输出字符串的余额。
答案 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,然后在递归中删除整个字符串中的"
的等号。