首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式捕获捕获组中的所有内容(包括换行符)

正则表达式捕获捕获组中的所有内容(包括换行符)
EN

Stack Overflow用户
提问于 2016-12-22 09:35:10
回答 2查看 69关注 0票数 3

我有一些文本(你们中的一些人可能会认出它是财富文件的一部分)

代码语言:javascript
复制
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中使用它。

EN

回答 2

Stack Overflow用户

发布于 2016-12-22 09:37:18

尝尝这个,

代码语言:javascript
复制
str.split(/\n%\n/)

这将按仅包含%的行拆分字符串。

票数 1
EN

Stack Overflow用户

发布于 2016-12-22 12:48:01

要匹配换行符,可以使用[^][\s\S]。点与不匹配。这与m标志无关,后者与锚点(^$)在行的开头和结尾是否匹配有关。其他regexp引擎具有使点匹配换行符的语法,并且正在为JS的未来版本提出一个语法,但目前您必须使用上面的方法之一。

[^]的字面意思是“匹配任何不是空格的字符”,事实证明,它包括一个换行符;[\s\S]的字面意思是“匹配任何空格或非空格的字符”,也包括一个换行符。

假设除了这个换行符问题之外,您的regexp当前可以正常工作,请使用

代码语言:javascript
复制
(?<=%\n)([^]*?)(?=\n%)

参见this SO question。在Eloquent JavaScript中有一些关于这方面的信息。TC39提案(针对新的s标志)是here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41274544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档