空字符串到底是什么意思?

塞贝尔克

我确定我们大多数人都知道,当我们希望某些正则表达式与该行开头的字符串匹配时,必须使用“ ^” ...

但是,我试图理解真正的意思是“行首的空字符串”

我知道回声“ Hello World” | grep ^ H它匹配

因此,请查看以下命令的输出:

[sergio@localhost ~]$ dd if=/dev/zero of=/tmp/texto  count=1 bs=1 2>/dev/null
[sergio@localhost ~]$ od -ta /tmp/texto          
0000000 nul
0000001

到目前为止,一切都按预期进行,因此:

[sergio@localhost ~]$ echo  "Hello" >> /tmp/texto
[sergio@localhost ~]$ grep -a "^Hello" /tmp/texto 

好吧,我必须承认的第一件事没想到,在Hello之前有一个空字符,为什么它不匹配?

好的,让我们在perl样式中使用grep:

[sergio@localhost ~]$ grep -a -P "\x00Hello" /tmp/texto 
Hello

好,它匹配

但是我不明白(也许我有一些误解)为什么grep -a“ ^ Hello”不匹配...

你可以帮帮我吗?

提前致谢!

用户

您正在将空字符(二进制值0)与空字符串混淆

“行首的空字符串”只是行首字符之前的不存在的内容(存在)同样,在行末的空字符串是在行的最后一个字符之后发现的类似的非内容。空字符串可以被认为是由“空字符串,空字符串”组成,而具有某些内容的字符串可以被认为是“空字符串,Hello world,空字符串”。

C中的字符串表示为一系列非0字节,后跟一个或多个0字节,表示字符串终止,但这与正则表达式中的“空字符串”完全分开,实际上很大程度上是C中的内部选择编程语言和标准库。很少有其他语言可以这样做,但是即使这样也可以表示空字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在B树中,“键”到底是什么意思?

来自分类Dev

这个标志到底是什么意思?| =

来自分类Dev

TE和NT到底是什么意思

来自分类Dev

“带外库”到底是什么意思?

来自分类Dev

authTokenType到底是什么意思?

来自分类Dev

“分支”到底是什么意思?

来自分类Dev

<puts @ plt>到底是什么意思?

来自分类Dev

SE_ERR_ASSOCINCOMPLETE到底是什么意思?

来自分类Dev

闭包到底是什么意思?

来自分类Dev

“服务静态文件”到底是什么意思?

来自分类Dev

整数基数,这到底是什么意思?

来自分类Dev

Nim中的字符串到底是什么?

来自分类Dev

最大似然估计到底是什么意思?

来自分类Dev

`int const a [5]`到底是什么意思?

来自分类Dev

* NSFileProtectionComplete *到底是什么意思?

来自分类Dev

IQueryable到底是什么意思?

来自分类Dev

decltype(void())中的void()到底是什么意思?

来自分类Dev

“初始化”到底是什么意思?

来自分类Dev

[decl.constexpr] .5到底是什么意思?

来自分类Dev

XML模式组件maxLength到底是什么意思?

来自分类Dev

这条线到底是什么意思?

来自分类Dev

私有变量到底是什么意思?

来自分类Dev

“ {$ F'filename'}”到底是什么意思?

来自分类Dev

Linux上的LC_ *语言环境字符串到底是什么意思?

来自分类Dev

“`_`,`-`,`--`或空字符串用于Shell的错误消息”是什么意思?

来自分类Dev

getalldocumentsbykey 函数获取空字符串是什么意思?

来自分类Dev

开源到底是什么意思?

来自分类Dev

Python 烧瓶路线:什么是“?” 到底是什么意思?

来自分类Dev

“^A”的字符串到底是什么?