javascript - 通过指定开始和结束字符来拆分字符串

标签 javascript regex string

我有一个字符串 (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]*?)@@/
    
  • 如果您需要它更好地执行,特别是使用更长的字符串时更快地失败:

    /##([^@]*(?:@[^@]+)*)@@/
    

    * Benchmark

关于javascript - 通过指定开始和结束字符来拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38813172/

相关文章:

javascript - URL 验证的正则表达式(在 JavaScript 中)

python - 如何在 Python 3 中取消转义特殊字符?

c# - 如何在 C# 中解析字符串(以逗号和结尾的符号,即 "3,246,928-")?

javascript - Google map 标记未使用 ajax json 数据显示

javascript - Sigma.js 过滤器问题

java - 在 Java 中使用 RegEx 接受带有单点的文件名

R - 基于正则表达式的出现有条件地匹配数据帧之间的变量值

ios - Swift 提取正则表达式匹配项

javascript - vue-test-utils - 如何处理 $refs?

javascript - native 菜单不显示 OS X Electron