正则表达式:在Word之后拆分下一个换行符

时间:2013-11-04 18:17:13

标签: jquery regex split

我有这样的陈述:

  

嗒嗒
  等等
  约翰这样做了   等等
  等等
  约翰做到了这一点   等

我需要在以John开头的行末尾的换行符处拆分此文本。约翰之后的文本不一致,但最后一行总是以约翰开头。将它拆分为“约翰”很容易,我只是不知道如何说“在约翰这个词之后在下一个换行符处拆分”。

.split(/(.*?John*?\n)+/g)

如果我想让它留在上面的东西上面,那么上面就会把它分开,约翰成为它自己的条目。

修改

输出应为:

  

(嗒嗒
  等等
  约翰这样做了)   (废话
  等等
  约翰这样做了)   (等...

括号表示分割边界/单个数组条目。

3 个答案:

答案 0 :(得分:1)

我认为它适合你:

.split(/.+John.+\n/g)

.任何元素

+一次或多次

John

.+任何元素1次以上

\n新行

全球

g。不要停留在第一次拆分。

修改

使用此.split(/(.*?John*?\n)+/g),您正在匹配:

.*任何元素0次以上

John*? John 0次以上。 ?在这里没有意义。

\n新行

所以除了约翰或新线后,约翰不再匹配任何东西。

答案 1 :(得分:1)

这应该有效:

s = "blah\n" +
"blah\n" +
"John did this\n" +
"blah\n" +
"blah\n" +
"John did that";

m = s.match(/[\s\S]*?\bJohn\b[^\n]*/g);

console.log(m);

<强>输出:

["blah
blah
John did this", "
blah
blah
John did that"]

答案 2 :(得分:0)

我就是这样做的:

var splitted = text.match(/[^]+?John.+\n/g);
  • [^]+?→任何字符(但至少有一个字符)不情愿,以免它消耗约翰
  • .+\n→与John
  • 在同一行中的每个字符

正如@anubhava建议你可以对任何角色使用[\s\S],如果你没有要分割正则表达式\b,请使用Jonhy围绕约翰。如果您想匹配空字符串,请将+替换为*,如果您不想包含新行,请使用[^\n]+(除新行之外的所有字符)。


Working Fiddle