gpt4 book ai didi

regex - 在正则表达式中表达超出 $ 的匹配项

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:58 25 4
gpt4 key购买 nike

我已经用 awk 尝试了以下测试:

例子:
如果我有一个文件:

miz[space][space][end-of-line]  
[empty line]
pel

如果我这样做:

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

awk 找到模式。

但是如果我从第一行中删除 2 个空格:

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")' 也不起作用

最佳答案

首先 \s 是特定于 gnu-awk 的,非 gnu awk 不支持它。现在回到您的问题,您可以像这样使用空 RS(记录分隔符),并且您的正则表达式在这两种情况下都适用:

 awk 'sub(/miz[[:space:]]/,"misspell")' RS='\0' file

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

关于regex - 在正则表达式中表达超出 $ 的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com