
可能重复:
我需要一个正则表达式(没有其他语言!!,最好是perl语法REGEX或PCRE语法REGEX),以用单引号引起来的所有双引号“ \”代替. 这是一个示例字符串(文件的一部分):
var baseUrl = $("#baseurl").html();
var head = '<div id="finishingDiv" style="background-image:url({baseUrl}css/userAd/images/out_main.jpg); background-repeat: repeat-y; ">'+
'<div id="buttonbar" style="width:810px; text-align:right">';
(请注意: 不必将它们配对为“ someValueBetween”,这样就可以在一个单引号字符串中使用双引号的数量不均匀. )
这应该是上面最后一行的最终结果:
'<div id=\"buttonbar\" style=\"width:810px; text-align:right\">';
预先感谢
***更新: 为了清楚起见,我只需要一个正则表达式正则表达式 双引号,而不是perl programm. 正则表达式可以是perl regex语法或PHP PCRE语法(根据我的理解,它与perl regex语法非常接近). 目标是您可以在搜索中的IDES中运行正则表达式,并替换支持正则表达式的菜单(例如Eclipse和PhpEd fe)!
换句话说,我想要一个正则表达式,将其放在搜索IDE字段中,从而使我得到所有未转义的“作为单引号引起来的字符串. 因此正则表达式 双引号,在eclipse的replace字段中,我只需将\ $ 1逃脱他们.

请在Regexbuddy或regex教练中工作,以便我对其进行测试.
至少这是计划: )
解决方案
您只要求Perl(或PCRE).
好的.
如果无论在何处都想转义未转义的双引号,请执行以下操作:
s{
(?<! (?<! \\ ) \\{1} )
(?<! (?<! \\ ) \\{3} )
(?<! (?<! \\ ) \\{5} )
(?<! (?<! \\ ) \\{7} )
(?= " )
}{\\}xg;
如果要在未转义的单引号之间转义未转义的双引号,并且只有一对这样的单引号,请执行以下操作:
1 while s{
(?(DEFINE)
(?<unescaped>
(?<! (?<! \\ ) \\{1} )
(?<! (?<! \\ ) \\{3} )
(?<! (?<! \\ ) \\{5} )
(?<! (?<! \\ ) \\{7} )
)
(?<single_quote> (?&unescaped) ' )
(?<double_quote> (?&unescaped) " )
(?<unquoted> [^'] *? )
)
(?<HEAD>
(?&single_quote)
(?&unquoted)
)
(?<TAIL>
(?&double_quote)
(?&unquoted)
(?&single_quote)
)
}<$+{HEAD}\\$+{TAIL}>xg;
但是,如果每行可能有多组成对的非转义单引号,并且您只想转义介于那些非转义单引号之间的未转义双引号,则请执行以下操作:

sub escape_quote {
my $_ = shift;
s{
(?<! (?<! \\ ) \\{1} )
(?<! (?<! \\ ) \\{3} )
(?<! (?<! \\ ) \\{5} )
(?<! (?<! \\ ) \\{7} )
(?= " )
}{\\}xg;
return $_;
}
s{
(?(DEFINE)
(?<unescaped>
(?<! (?<! \\ ) \\{1} )
(?<! (?<! \\ ) \\{3} )
(?<! (?<! \\ ) \\{5} )
(?<! (?<! \\ ) \\{7} )
)
(?<single_quote> (?&unescaped) ' )
(?<unquoted> [^'] *? )
)
(?<HEAD> (?&single_quote) )
(?<TARGET> (?&unquoted) )
(?<TAIL> (?&single_quote) )
}{
$+{HEAD} .
escape_quote($+{TARGET}) .
$+{TAIL}
}xeg;
请注意,所有这些都假定您没有包含未转义单引号的合法成对的未转义双引号. 甚至像这样的事情也会让您失望:
my $cute = q(') . "stuff" . q(');
不过,也许您想使用适当的解析模块.
请不要关注所有花哨的和欺骗性的错误SO着色. 由于某种原因,它似乎无法像Perl一样解析Perl. 无法想象为什么. ☺
本文地址: IT之家»使用正则表达式将所有双引号括在单引号字符串中
可以重复:
正则表达式在单引号内转义双引号
我需要一个正则表达式(没有其他语言!!,最好是Perl语法REGEX或PCRE语法REGEX),以在单引号字符串中用\替换所有双引号. 这是一个示例字符串(文件的一部分):
var baseUrl = $(#baseurl)。html() ;
var head ='< div id =finishingDivstyle =background-image:url({baseUrl} css / userAd / images / out_main.jpg); background-repeat:repeat-y;> '+
'< div id =buttonbarstyle =width:810px; text-align:right>';

(请注意: 它们不必配对someValueBetween,因此它的数字可能不均匀,带有单引号和双引号. )
这应该是上面最后一行的最终结果:
'
预先感谢
***更新:
为清楚起见,我只需要一个正则表达式,而不是perl程序. 正则表达式可以是perl regex语法或PHP PCRE语法(从我理解的perl正则表达式语法来看,这是非常接近的语法). 目的是您可以在IDES中运行正则表达式以搜索和替换支持正则表达式的菜单(例如Eclipse和PhpEd fe)!
换句话说,我想要一个正则表达式,将其放入搜索IDE字段中,以便将所有未转义的表达式完全包含在单引号字符串中作为结果. 在eclipse的替换字段中,我可以输入
他们应该在Regexbuddy或正则表达式教练中工作,所以我可以对其进行测试.
至少这是计划: )
解决方案

您只要求Perl(或PCRE).
好的.
如果只想转义未转义的双引号,无论在哪里找到它们,请执行以下操作:
s {
(?<!(?< ;! \\)\\ {1})
(?<!(?<!\\)\\ {3 })
(?<!(?<!\\)\\ {5})
(?< ;!(?< ;! \\)\\ {7})
(?=)
} {\\} xg;
如果要避免在未转义的单引号之间使用未转义的双引号,并且只有一对这样的单引号,请执行以下操作:
1,而{{b
$ b(?(DEFINE))
(?< unescaped>
(?< ;!(?< ;! \\)\\ {1})
(?<! ;!\\)\\ {3}
(?<!(?<!\\)\\ {5})
(? !(?< ;! \\)\\ {7}
)
(?< single_quote>(?& unescaped)')
(?< double_quote>(& unescaped))
(?< unquoted> [^'] *?)
)
< HEAD>
(?& single_quote)
(?& unquoted)
)
(?< TAIL>
; double_quote)
(?& unquoted)
(?& single_quote)
)
}< $ + {HEAD} \ \ $ + {TAIL}> xg;
但是,如果每行可能有多对未转义的单引号,并且您只想在这些未转义的单引号之间转义未转义的双引号,请执行以下操作: <
sub escape_quote {
my $ _ = shift;
s {
(?< ;!(?< ;! \\)\\ {1})
(?<!(?< ;! \\ )\\ {3})
(?<!(?<!\\)\\ {5})
(?<! \\)\\ {7}
(?=)
} {\\} xg;
return $ _;
}
s {
(?(DEFINE)
(?< unescaped>
(?<! ;!\\)\\ {1})
(?< ;!(?<!\\)\\ {3})
(? !(?<!\\)\\ {5})
(?<!(?<!\\)\\ {7})
)
(?< single_quote>(?& unescaped)')
(?< unquoted> [^'] *?)
)
(?< HEAD>(& single_quote))
(?< TARGET>(?& unquoted))
(?< TAIL& ; single_quote))
} {
$ + {HEAD}。
escape_quote($ + {TARGET})。
$ + {TAIL}
} xeg;
请注意,所有这些假设均假定您没有合法匹配的包含双引号的非双引号. 甚至像这样的事情也会让您失望:
我的$ cute = q(')。 东东 。 Q();
尽管如此,您仍要使用正确的解析模块.
请不要注意所有肮脏和奇怪的SO着色. 由于某些原因,似乎无法解析Perl和Perl. 无法想象为什么☺
本文地址: IT之家»使用正则表达式将所有双引号括在单引号字符串中
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-191261-1.html
在中国想要政商分离不可能
因为这包装早改了)