我有一个字符串 (100*##G.Mobile Dashboard||Android App (Practo.com)||# of new installs@@-##G.Mobile Dashboard||Android App (Practo. com )||# of uninstalls@@
我想以返回以下结果的方式拆分字符串(即它匹配以 ##
开头并以 @@
结尾的所有字符,并且用匹配的字符拆分字符串)
["(100*", "G. Mobile Dashboard||Android App ( Practo.com )||# of new installs", '-', 'G. Mobile Dashboard||Android App ( Practo.com )||# of uninstalls'
最佳答案
使用String.prototype.split()传递正则表达式。
var str = "(100*##G. Mobile Dashboard||Android App ( Practo.com )||# of new installs@@-##G. Mobile Dashboard||Android App ( Practo.com )||# of uninstalls@@";
var re = /##(.*?)@@/;
var result = str.split(re);
console.log(result);
当您使用 Capturing parentheses 时在正则表达式中,捕获的文本也在数组中返回。
请注意,这将有一个结尾的 ""
条目,因为您的字符串以 @@
结尾。如果您不想要它,只需将其删除即可。
如果您总是假设一个格式正确的字符串,则以下正则表达式会产生相同的结果:
/##|@@/
* T.J. Crowder 评论
如果您希望在
##
和@@
之间换行,请将表达式更改为:/##([\s\S]*?)@@/
如果您需要它更好地执行,特别是使用更长的字符串时更快地失败:
/##([^@]*(?:@[^@]+)*)@@/
关于javascript - 通过指定开始和结束字符来拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38813172/