简体   繁体   English

如果有转义字符,如何在两个字符串之间获取字符串

[英]How to get string between two strings when there are escaping characters

I am trying to get string between two strings and it works like this: 我试图在两个字符串之间获取字符串,它的工作原理如下:

if (text.toLowerCase().indexOf("[CUSTOMTAG]") >= 0) {
      _data = /\[CUSTOMTAG](.*?)\[\/CUSTOMTAG]/g.exec(text);
      if (_data[1] && _data[1].length > 0) {
        const data = _data[1];
      }
    }

But I have problem when string between contains something like: 但是当字符串之间包含类似的东西时,我有问题:

[CUSTOMTAG]this is some
[/ru ugly content here[/CUSTOMTAG]

I am getting exception here Cannot read property '1' of null because parsing fail. 我在这里得到异常Cannot read property '1' of null因为解析失败。 How I can ignore excaping characters between? 我如何能够忽略两者之间的兴奋角色?

It's not elegant but works. 它不优雅但有效。 You may need to make some adjustments but it's an alternative: 您可能需要进行一些调整,但它是另一种选择:

 var input = `[CUSTOMTAG]this is some [/ru ugly content here[/CUSTOMTAG] [CUSTOMTAG]test2[/CUSTOMTAG]`; var startIndex = 0, endIndex = 0, results = []; while ((endIndex = input.indexOf("[/CUSTOMTAG]", endIndex)) >= 0 && (startIndex = input.indexOf("[CUSTOMTAG]", startIndex)) >= 0) { results.push(input.substring(startIndex + "[CUSTOMTAG]".length, endIndex)); endIndex += "[/CUSTOMTAG]".length; startIndex += "[CUSTOMTAG]".length; } console.log(results); 

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

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