繁体   English   中英

使用正则表达式提取字符串

[英]extract string with Regular expression

它只是HTML代码的一小部分,我希望用<?包装所有代码。 和? >。

简单地说,我只想提取下面给出的字符串。 例如,

   var code='<td>Total Response Sets</td><? if(byExposure) { ?><td style="text-align:right;padding-right:10px"><?= question.totals["control"] ?></td>';

  // how to extract the required code with regular expression ?

使用npinti后,我使用下面的代码,它给出了我在<%&%>之间的第一个表达式。 但是,我如何获得下面几个表达式?

var patt=/<\?\s*(.*?)\s*\?>/g;
var result=patt.exec(code);
console.log(result[1]);  // o/p -> if(byExposure) {

(有关详细信息,代码用于下划线中的模板化.js)

这个正则表达式:

<\?\s*(.*?)\s*\?>

应该符合你的需要。 从给定的字符串中匹配以下内容:

<? if(byExposure) { ?>

<?= question.totals["control"] ?>

然后,您可以使用组提取标记之间的内容。 检查之前的SO线程,看看它是如何做。

这应该完成工作:

var code='<td>Total Response Sets</td><? if(byExposure) { ?><td style="text-align:right;padding-right:10px"><?= question.totals["control"] ?></td>';
var patt=/<\?\s*(.*?)\s*\?>/g;
var result=patt.exec(code);

while (result != null) {
    alert(result[1]);
    result = patt.exec(code);    
}

而不是exec ,使用match方法:

res = code.match(patt);

输出:

["<? if(byExposure) { ?>", "<?= question.totals["control"] ?>"]

我不确定你想要提取什么。 你只需要<?之间的第一个字符串吗? 然后你可以使用:

(/<\?(.*?)\?>/.exec( code ))[1]

这将返回if(byExposure){ 如果你想匹配第一个<? 和最后?>,然后你可以使用:

(/<\?(.*?)\?>/.exec( code ))[1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM