我的文字看起来像这样:
HEADING
Some random text which is not capitalized. Heading are always in their own line and capitalized.
HEADINGHHHH
Some other random text.
我想将此文本分为两部分:
1.part:
HEADING
Some random text which is not capitalized. Heading are always in their own line and capitalized.
和
2.part : HEADINGHHHH
Some other random text.
所以基本上,我想用大写标题“拆分”,每个对象必须包含带有文本的标题,直到下一个标题。
我试过
(([A-Z]+\\s?)+)$
但这不起作用。
答案 0 :(得分:1)
以下works:
/\G([A-Z]+\n+[\s\S]*?(?=\n+[A-Z]+\n|$))\n*/g
即。一个'标题'及其后的所有内容(非贪婪),直到有一个新的'标题'。
请注意,这是一个全局匹配,而不是split()
。另请注意,它使用了前瞻,因此无论您使用哪种引擎都必须支持它。
这是一个hack,所以如果你可以使用基于行的解析器,也许与正则表达式结合使用,我建议你这样做。
另一种方法是使用可以保存分隔符的split()
(我知道Perl可以,而IIRC也可以使用JavaScript)。
例如Perl:
split /^([A-Z]+)$/m, $text;
但是,这会在列表中的每个其他元素中添加一个标题,并将其内容放在其他元素中。
另一种选择是以前瞻的方式分开,例如, /^(?=[A-Z]+$)/m
。