正则表达式中的空白符详细解释

news/2024/11/29 10:46:34/

why- 为什么要专门写一篇空白符

空白符代表的是编程中常见的一些可以显示为空白的符号,最常见于正则表达式,比如:

var reg = /[\n\t\r\f\b\v\s]/;

这些字符其实是很常见的,但有时候又像是“最熟悉的陌生人”,有时甚至会混淆他们所代表的含义。

本文就彻底全面地对这些字符进行梳理解释,等我们明白了它们具体的含义和渊源后,就再也不会弄混它们了。

what- 它们分别代表什么意思:

符号含义
\n换行符
\r回车符
\t制表符
\f换页符
\v垂直制表符
\s空白字符

how- 怎么记忆

符号英文意义
\nnew line
\rreturn
\tTab
\fform feed
\vvertical
\sspace

when - 何时使用

符号用在哪里
\n当需要在当前行之下创建一个新行时使用
\r当需要将光标移动到当前行行首时使用
\t当需要使用制表缩进时使用,一个制表符并不等于四个或两个空格
\f当需要换页时使用
\v当需要在垂直方向制表缩进时使用
\s正则中使用,代表空白字符(\t\r\n\f\v<空格>

where - 来自哪里【渊源】

打字机

在现代计算机诞生很久前,键盘就已经诞生很多年了,它们被应用在电传打字机上面。

如下图所示,所有按键都链接再一个扇形的构件上面,每个按键对应着这个扇形构件的其中一个辐条,在扇形的圆心出,是一个缺口。

在使用打字机打字时,人们按下某个按键,打字机就将这个按键连接的辐条弹起,雕刻在这个辐条顶端的字母就穿过缺口打印到纸张上,然后另一个构件就会将纸张向左移动一个字母的位置,等待下一个按键按下。

image-20210926144352094

这就带来一个问题:

打字机每秒可以打印10个字符,而换行到下一行行首需要0.2秒,正好是打印两个字符的时间,在换行时如果有其它字符传入,那这0.2秒内的字符将丢失。

为了解决这个问题,研究人员想了一个办法,就是在每行后面自动打印两个表示结束的字符来占用这0.2秒时间,避免其它字符在这0.2秒时间内传入。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是回车和换行的来历:

  • 回车【Carriage Return】,根据其英文return, 使用\r表示,通常我们会看到它被缩写为【CR】,ASCII码为0X0d.
  • 换行【Line Feed】, 根据其英文new line ,使用\n表示,通常我们会看到它被缩写为【LF】,ASCII码为0x0a.

我们在使用git add命令时,有时会在命令终端看到这样的输出:

$ git add .
warning: LF will be replaced by CRLF in test1.txt.

意思是文件中的LF将被CRLF所替换,这是为什么呢?

其实这种信息只有在window下才有机会看到,原因是,我们在各个不同系统按下回车键时,它们的处理是不一样的:

  • linux\unix会在当前行的末尾加一个隐藏的\n,即LF符号
  • Mac系统下则会在当前行的末尾加一个隐藏的\r,即CR符号
  • windows则继承了打字机的技术,在当前行末尾加两个隐藏的字符\r\n,即CRLF.

之所以出现这种分歧,是因为一个开始计算机存储器很贵,有些计算机科学认为每行结尾加两个字符太浪费了,加一个就行。

那么,当我们在windows系统下试图打开一个来自linux系统是文件时,由于windows会识别\r\n而不会是识别单独的\n,于是就会将\n当做一个不可打印字符显示,就会显示为一个黑色方框。

为了解决这个问题,windowsgit就会自动将LF替换为CRLF.

Tab键,则是源于tablate这个词。它的意思是“以表格或表格的形式组织数据”。当一个人想在打字机上键入一张表格(数字或文本),他必须经常使用空格键和退格键。这花费了太多的时间,而且相当烦人。为了简化操作,在机构中放置了一个称为制表机机架的水平杆。按下tab键将使机架向前移动到下一个制表器挡块。第一个制表机挡块是夹子,可以在制表机机架上进行调整和移动。

打印机

在早期打印机上,当人们要打印的内容明显在一页纸上打不下,怎么办呢? 当然是新进一张纸,继续打印剩余的内容

可问题是,打印机如何知道,该从哪一行开始进新纸张打印呢?

另外,有些时候,出于内容编排的需要,人们并不需要等到一张纸打不下的时候才新进纸张打印,而是将一些人们认为需要打印在一张纸上的内容打印完就立即新进一张纸来打印其它内容。

这个时候又该怎么办呢?

于是人们利用一个隐藏的字符\f来告诉打印机,该是时候新进纸张了。

后来,当人们需要在显示器上输出内容时,也会遇到文本内容在一屏内容显示不下或想要将特定内容放置到下一屏显示的需求,就借用了打印机的做法,使用了\f来作为换页分隔符,来告诉计算机显示器该在何时换页。

总结

符号含义英文缩写ASCII渊源
\n换行符new lineLF0x0A来自于电传打字机
\r回车符returnCR0x0D来自于电传打字机
\t制表符tab\tablateHT0x09来自于打字机
\f换页符form feedFF0x0C来自于打印机
\v垂直制表符vertical tabVT0x0B来自于打字机
\s空白字符space正则中代表以上所有字符+空格

http://www.ppmy.cn/news/548160.html

相关文章

空白字符

s s 5;ss5;//上面这两行代码的运行结果相同&#xff0c;浏览器解释执行第一个赋值语句忽略了其中的空格。值得注意的是&#xff0c;浏览器解释执行脚本代码时&#xff0c;并非语句中所有的空格均被忽略掉。x typeof y;x typeofy;//上面这两行代码代表的意义是不同的&#x…

Eclipse显示空白符号的具体设置

1、启动Eclipse&#xff0c;打开Preferences对话框。菜单“window”-“Preferences” 2、找到Text Editors&#xff0c;勾选show whitespace characters&#xff0c;如图&#xff1a;“General”-“Editors”-“Text Editors” 3、需要显示哪些空白&#xff0c;则可以点击“con…

CAD图案复制到Excel里面怎么去掉空白部分?如何在CAD中绘制常用的标高符号?

将CAD画图软件中的图案复制到Excel表格里&#xff0c;会出现白色的底图&#xff0c;白色部分比较大&#xff0c;而图案比较小。在office2006以前是可以直接单击右键对图片进行修剪的&#xff0c;并且可以直接双击进入CAD软件里对图案进行修剪。但现在的office版本没有了裁剪按钮…

《Word中同一标点符号在不同位置空白间距不一致应怎样调》

在写文档时出现类似于下图这种情况&#xff0c;段落格式设置一模一样&#xff0c;同样是中文标点符号&#xff0c;没有空格&#xff0c;都是半角&#xff0c;但就是标点的空白间距不同。 设置方法&#xff1a;段落-》中文版式-》选项-》版式-》字符间距控制-》不压缩。

js去除字符串空格(空白符)

使用js去除字符串内所带有空格&#xff0c;有以下三种方法&#xff1a; ( 1 ) replace正则匹配方法 去除字符串内所有的空格&#xff1a;str str.replace(/\s*/g,""); 去除字符串内两头的空格&#xff1a;str str.replace(/^\s*|\s*$/g,""); 去除字符串…

使用正则表达式去掉回车、换行、空白符号

使用正则表达式进行替换 回车、换行、空白符号&#xff1a; String strarray.get(i).replaceAll("\r|\n|\\s", ""); \r: 匹配一个回车符 \n: 换行符匹配; \\s:匹配任何空白字符&#xff0c;包括空格、制表符、换页符等; 例如&#xff1a;大家好 欢迎…

html空白字符显示效果,什么是空白字符?空白符有哪些?

空白字符&#xff0c;也可简称“空白符”&#xff0c;通俗理解&#xff0c;就是不会显示出来的字符&#xff0c;类似空格符、回车换行符、制表符之类的字符&#xff0c;从视觉效果上来看&#xff0c;只是一个空白区域而已。 空白字符有哪些&#xff1f; 空白符主要有空格符、回…

【Java】字符串中常见的空白符及剔除方法

除了英文状态下的空格&#xff0c;还有几类的空白符。 一、常见的空白符 1. 空格 " " 最常见的空格。 产生&#xff1a;在英文输入模式下&#xff0c;空格键单击一次。 2. 中文全角空格 " " 比较少见的空格。 产生&#xff1a;在中文输入模式下&…