支架内的正则表达式匹配的正则表达式的报价
我工作的一个正则表达式必须只引号内而不是在注释文本匹配,我macthes只能在大胆支架内的正则表达式匹配的正则表达式的报价
< “爱”的字符串 ;>
>/* “爱” */<
<>'爱' <>
“LO
更多的爱
已经”
我stunck这个:
/(?:((\"|\')(.|\n)*?(\"|\')))(?=(?:\/\**\*\/))/gm
第一个(?:((\"|\')(.|\n)*?(\"|\')))
匹配所有的字符串 ,引号里的第二个(?=(?:\/\**\*\/))
不匹配文本/* "mystring" */
一下我的逻辑里是克利错误
什么建议吗?
感谢
避免评论部分的方法是在之前匹配它们。全球格局是这样的:
/(capture parts to avoid)|target/
然后使用一个回调函数,用于替换(当拍摄组存在,返回比赛没有改变,否则,你想要的东西更换比赛
例。 :
var result = text.replace(/(\/\*[^*]*(?:\*+(?!\/)[^*]*)*\*\/)|"[^"\\]*(?:\\[\s\S][^"\\]*)*"|'[^'\\]*(?:\\[\s\S][^'\\]*)*'/g,
function (m, g1) {
if (g1) return g1;
return '<b>' + m + '</b>';
});
非常感谢正则表达式的完美,并且我更了解正则表达式的逻辑。再次感谢 – Morticella 2015-03-19 12:54:11
@Morticella:单引号没有问题,刷新页面。 – 2015-03-19 13:06:40
是的你是对的完美 – Morticella 2015-03-19 13:12:12
也许你只需要使用负前瞻检查注释结束*/
?
但首先,我会分割字符串分成几行
var arrayOfLines = input_str.split(/\r?\n/);
,或者不空行:
var arrayOfLines = input_str.match(/[^\r\n]+/g);
然后用this regex:
["']([^'"]+)["'](?!.*\*\/)
示例代码:
var rebuilt_string = ''
var re = /["']([^'"]+)["'](?!.*\*\/)/g;
var subst = '<b>$1</b>';
for (i = 0; i < arrayOfLines.length; i++)
{
rebuilt_string = rebuilt_string + arrayOfLines[i].replace(re, subst) + "\r\n";
}
'(“|')([^''] +)(”|')(?!\ * \ /(。我改变了一点正则表达式,但它仍然匹配注释中的字符串 – Morticella 2015-03-19 12:43:27
我宁愿先分割多行输入,然后应用'['']([^' “] +)[''](?!。* \ * \ /)'正则表达式。但是,您已经从C&H得到了一个适合您的答案 – 2015-03-19 13:36:27
您能告诉我一个ie吗? – Morticella 2015-03-19 12:44:53