首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表示超过$ in regex的匹配

表示超过$ in regex的匹配
EN

Stack Overflow用户
提问于 2014-02-02 16:03:24
回答 2查看 255关注 0票数 0

我用awk进行了以下测试:

示例:

如果我有一个文件有:

代码语言:javascript
复制
miz[space][space][end-of-line]  
[empty line]  
pel  

如果我这样做了:

代码语言:javascript
复制
$ cat mul.txt |awk 'sub(/miz\s+/,"misspell")'  
misspell   

awk发现了模式。

但是,如果我从行的第一个移除这两个空格:

代码语言:javascript
复制
miz[end-of-line]  
[empty line]  
pel  

我得到:

$ cat mul.txt |awk 'sub(/miz\s+/,"misspell")'

也就是说,awk不匹配。

$\s之间似乎有些微妙之处,我无法理解。

而且,我似乎无法找到一种方法来表达包含$之外的匹配的正则表达式,但是第一个片段可以工作。

有人能解释一下这里有什么问题吗?

更新:

如下:$ cat mul.txt |awk 'sub(/miz(\s+|$|^$|^\s+$)+pel/,"misspell")'也不起作用

EN

回答 2

Stack Overflow用户

发布于 2014-02-02 16:24:52

首先,\s是特定于gnu-awk的,而非gnu awk不支持它。现在回到您的问题上,您可以像这样使用空RS (),您的regex在这两种情况下都可以工作:

代码语言:javascript
复制
 awk 'sub(/miz[[:space:]]/,"misspell")' RS='\0' file

注意RS="\0',它将RS设置为空字节。

票数 2
EN

Stack Overflow用户

发布于 2014-02-02 16:06:45

使用此正则表达式可以同时处理行尾和空格:

代码语言:javascript
复制
/miz([ ]+|\n)/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21512717

复制
相关文章

相似问题

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