首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式中有行中断时,它不能与文本匹配

正则表达式中有行中断时,它不能与文本匹配
EN

Stack Overflow用户
提问于 2017-04-26 18:55:17
回答 2查看 1.2K关注 0票数 1

我试图基于正则表达式提取字符串,但是当字符串中存在新行时。正则表达式不处理

正则表达式-

代码语言:javascript
复制
^Test\s[0-9]-[0-9]:.+?(?=\.)

表达式很简单,它匹配以Test开头的任何字符串,后面跟着空格和数字数字,和:后面跟着任何文本直到。

这会发现如下所示的文本消息

代码语言:javascript
复制
Test 1-8: This is first test.
Test 9-8: This is second test and is OK.
Test 5-1:This is Test 1,3 three.

但是,当下面有一个带有行间隔的文本时,上面的正则表达式不起作用。

代码语言:javascript
复制
Test 9-8: This is second test 
and is OK.

我应该如何在正则表达式中处理这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-26 18:56:54

. (在.+?(?=\.)中使用)与非POSIX引擎中的断线字符不匹配(精确的字符在regex库中有所不同)。

在这里使用一个否定的字符类[^.]+

代码语言:javascript
复制
^Test\s[0-9]-[0-9]:[^.]+

regex演示

[^.]+匹配除文字点以外的任何一个或多个字符(包括换行符)。

票数 1
EN

Stack Overflow用户

发布于 2017-04-26 19:03:00

要匹配“任意字符,包括换行符”,可以使用以下方法:[\s\S],意思是“任意空白字符和任何非空白字符”.非常有效:一切。

或者,您可以使用“s”标志:/^Test\s[0-9]-[0-9]:.+?(?=\.)/s。这还将包括圆点的换行符。

不过,@wiktor-stribiżew提供的解决方案更有效,因此我建议使用该解决方案。

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

https://stackoverflow.com/questions/43642378

复制
相关文章

相似问题

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