首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个Regex不捕获这两条匹配的线?

问为什么这个Regex不捕获这两条匹配的线?
EN

Stack Overflow用户
提问于 2019-06-04 20:21:46
回答 1查看 55关注 0票数 1

我有以下文本文件:

代码语言:javascript
复制
a
a

我试图使用以下命令匹配以a开头的行:pcregrep -M '^a'。它只匹配第一个a,而不匹配第二个。有人知道为什么吗?我使用pcregrep是因为这是一个简单的问题,稍后我将扩展到更复杂的场景。

谢谢!

更新

原因是我使用的是Mac,其中每个换行符都是回车。因此,pcregrep将文件内容(即\ra)解释为一行,而我的regex只返回该行中的第一个a,因为这是表达式中指定的全部内容。使用pcregrep的解决方案是指定换行符类型。“'Newline类型”是指Regex引擎将其解释为指定行尾的字符。因此,如果我们在本例中指定换行符类型为回车(\r),pcregrep将将我的文件的内容解释为两行,并匹配并返回这两行。

我的Regex的固定版本是pcregrep -M -N CR '^a',其中-N CR的意思是“换行符类型是回车”。

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 20:57:39

由于您在MasOS中创建了一个文本文件,所以行尾用CR (回车)符号(\r、\x0D、索引13的字符在ASCII表中表示)表示。

默认情况下,pcregrep和其他类似的工具都将\n (一个LF (行提要)符号)作为换行字符。

您应该告诉pcregrep使用CR作为换行字符,使用-N选项:

代码语言:javascript
复制
pcregrep -o -N CR '^a' file
            ^^^^^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56450832

复制
相关文章

相似问题

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