给定字符串
s1 = "abcfoodefbarghi"
和
s2 = "abcbardefooghi"
如何将s1拆分为“abc”和“defbarghi” 和s2成“abc”和“defooghi” 即:在第一次出现字符串“foo”或“bar”
时,将字符串拆分为两个我想这可以用s.split(/regexp/)
完成,但这个正则表达式应该是什么?
答案 0 :(得分:3)
以这种方式使用正则表达式:
var match = s1.match(/^([\S\s]*?)(?:foo|bar)([\S\s]*)$/);
/* If foo or bar is found:
match[1] contains the first part
match[2] contains the second part */
RE的解释:
[\S\s]*?
匹配足够的字符以匹配RE的下一部分,即(foo|bar)
“foo”或“bar”[\S\s]*
匹配其余字符 RE的一部分周围的括号创建一个组,以便可以引用分组的匹配,而(?:)
创建一个不可引用的组。
答案 1 :(得分:2)
str.replace(/foo|bar/,"\x034").split("\x034")
idea是用特殊的(不可见的)String替换第一个匹配项,然后对该字符串进行拆分。