我正在使用 "my-string".split("\n") 将字符串拆分为行数组,效果很好。
但是现在我需要添加对连续字符“\”的支持。
我想更改我的分割,以便它将字符串分割成“\n”上的行除非如果“\n”之前有一个“\”字符
例如“THIS\nIS\nA\nTEST”将拆分为“THIS”、“IS”、“A\nTEST”
起初我以为我应该用占位符替换/\n 实例的所有实例,然后在最后将它们更改回来。但这是太多的处理。该字符串可能会很长,并且可能会占用很多行。
最佳答案
这称为负向后查找。这例如匹配前面没有 a 的 b:
(?<!a)b
所以,你需要的是
(?<!\\)\n
更新 JavaScript 不支持负向后查找。不幸的是,没有单一的最佳策略来应对它。这是一个不错的博客,列出了所有可能的方法:http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript
我个人会选择按“\n”进行拆分,即完全避免使用正则表达式,然后将末尾带有“\”的字符串加入数组中。对于这种特殊情况,如果延续是异常(exception)而不是规则,它将提供最佳性能。
关于javascript - 如何创建正则表达式来分割行,除非有斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355141/