我有一些文字(你们中的一些人会认为是财富文件的一部分)
A day for firm decisions!!!!! Or is it?
%
A few hours grace before the madness begins again.
%
A gift of a flower will soon be made to you.
%
A long-forgotten loved one will appear soon.
Buy the negatives at any price.
%
可以看出,它包含单行文本和块文本(如上一次财富所示)。
我目前有一个可以捕获所有单行命运的正则表达式,但是,它并没有捕获多线财富。
(?<=%\n)(.*?)(?=\n%)
我知道有一个/m
多行选项,但是,我不希望整个正则表达式启用多行(我没有让它以这种方式工作)。
所以我的问题是:如何在分隔符之间选择多行文本块作为本地捕获组?应该注意的是,我将在JavaScript中使用它。
答案 0 :(得分:1)
试试这个,
str.split(/\n%\n/)
这会将字符串拆分为仅包含%
的行。
答案 1 :(得分:0)
要匹配换行符,您可以使用[^]
或[\s\S]
。点与不匹配。这与m
标志无关,该标志与锚点(^
和$
)在行的开头和结尾是否匹配有关。其他正则表达式引擎具有使点匹配换行符的语法,并且正在为未来版本的JS提出一个,但目前您将不得不使用上述方法之一。
[^]
字面意思是“匹配任何并非一无所有的角色”,事实证明,它包括一个换行符; [\s\S]
字面意思是“匹配任何空格或空白字符”,其中还包含换行符。
假设您的正则表达式目前无效,除了此换行问题,请使用
(?<=%\n)([^]*?)(?=\n%)
见this SO question。 Eloquent JavaScript中有一些相关信息。 TC39提案(针对新s
标志)为here。