Linux 正则表达式
linux命令 获取数字的正则表达式

linux命令获取数字的正则表达式Linux命令中有许多可以用来获取数字的正则表达式,本文将介绍几个常用的命令及其正则表达式用法。
一、grep命令grep命令用于在文件中搜索指定的模式。
使用正则表达式可以更精确地指定要搜索的内容。
下面是一个例子:```grep -o '[0-9]\+' filename```上述命令会在文件中搜索连续的数字,并将其输出。
其中,`-o`选项表示只输出匹配的部分,`[0-9]\+`表示匹配一个或多个数字。
二、sed命令sed命令是一个流编辑器,可以对文本进行替换、删除、插入等操作。
使用正则表达式可以实现更灵活的文本处理。
下面是一个例子:```sed -n 's/[^0-9]*\([0-9]\+\).*/\1/p' filename```上述命令会从文件中提取出连续的数字,并将其输出。
其中,`-n`选项表示只输出匹配的行,`s/[^0-9]*\([0-9]\+\).*/\1/p`表示匹配以数字开头的行,并提取其中的数字。
三、awk命令awk命令是一种强大的文本处理工具,可以对文本进行分析和处理。
使用正则表达式可以更灵活地指定要处理的内容。
下面是一个例子:```awk '{ for(i=1; i<=NF; i++) if($i~/^[0-9]+$/) print $i }' filename```上述命令会在文件中搜索并输出连续的数字。
其中,`NF`表示当前行的字段数,`$i~/^[0-9]+$/`表示判断第i个字段是否为连续的数字。
四、find命令find命令用于在指定目录下搜索文件,并可以根据一些条件进行过滤。
使用正则表达式可以更精确地指定要搜索的文件名。
下面是一个例子:```find /path/to/directory -type f -regex '.*[0-9]+.*'```上述命令会在指定目录下搜索文件名中包含数字的文件,并将其输出。
笔记整理——Linux下C语言正则表达式

笔记整理——Linux下C语⾔正则表达式Linux下C语⾔正则表达式使⽤详解 - Google Chrome (2013/5/2 16:40:37)Linux下C语⾔正则表达式使⽤详解2012年6⽉6⽇627 views标准的C和C++都不⽀持正则表达式,但有⼀些函数库可以辅助C/C++程序员完成这⼀功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发⾏版本都带有这个函数库。
C语⾔处理正则表达式常⽤的函数有regcomp()、regexec()、regfree()和regerror(),⼀般分为三个步骤,如下所⽰:C语⾔中使⽤正则表达式⼀般分为三步:1. 编译正则表达式 regcomp()2. 匹配正则表达式 regexec()3. 释放正则表达式 regfree()下边是对三个函数的详细解释1. int regcomp (regex_t *compiled, const char *pattern, int cflags)这个函数把指定的正则表达式pattern编译成⼀种特定的数据格式compiled,这样可以使匹配更有效。
函数regexec 会使⽤这个数据在⽬标⽂本串中进⾏模式匹配。
执⾏成功返回0。
参数说明:①regex_t 是⼀个结构体数据类型,⽤来存放编译后的正则表达式,它的成员re_nsub ⽤来存储正则表达式中的⼦正则表达式的个数,⼦正则表达式就是⽤圆括号包起来的部分表达式。
②pattern 是指向我们写好的正则表达式的指针。
③cflags 有如下4个值或者是它们或运算(|)后的值:REG_EXTENDED 以功能更加强⼤的扩展正则表达式的⽅式进⾏匹配。
REG_ICASE 匹配字母时忽略⼤⼩写。
REG_NOSUB 不⽤存储匹配后的结果。
REG_NEWLINE 识别换⾏符,这样'$'就可以从⾏尾开始匹配,'^'就可以从⾏的开头开始匹配。
linux路径的正则表达式

linux路径的正则表达式
Linux路径是指Linux操作系统中的文件和目录路径,这些路径可以使用正则表达式来匹配。
在Linux中,路径以斜杠(/)分隔,例如:
/home/user/file.txt
其中,“/home”是根目录下的“home”目录,“/user”是“home”目录下的“user”目录,“/file.txt”是“user”目录下的“file.txt”文件。
使用正则表达式可以方便地匹配各种路径格式。
例如,要匹配以“/home/user”开头且以“.txt”结尾的路径,可以使用以下正则表达式:
^/home/user.*.txt$
其中,“^”表示匹配开头,“.*”表示匹配任意字符任意次数,“.”表示匹配句点,“$”表示匹配结尾。
另一个例子是要匹配以“/var/log”开头且包含“syslog”字符串的路径,可以使用以下正则表达式:
^/var/log.*syslog.*
同样的,“^”表示匹配开头,“.*”表示匹配任意字符任意次数,“.*syslog.*”表示匹配包含“syslog”字符串的路径。
使用正则表达式可以灵活地匹配各种路径格式,方便地进行文件和目录操作。
- 1 -。
linux awk 正则

linux awk 正则
AWK是一种文本处理工具,它支持使用正则表达式进行模式匹配和处理。
以下是一些常见的AWK正则表达式:
1. 匹配整个字符串:/pattern/,例如:/hello/表示匹配字符串中的“hello”。
2. 匹配字符串的开头:/^pattern/,例如:/^hello/表示匹配字符串开头的“hello”。
3. 匹配字符串的结尾:/pattern$/,例如:/world$/表示匹配字符串结尾的“world”。
4. 匹配特定字符集合:/[characters]/,例如:/[abc]/表示匹配包含字符“a”、“b”、“c”的字符串。
5.匹配单个字符:/./,例如:/./表示匹配任何单个字符。
6.匹配重复次数:/{n,m}/,例如:/[0-9]{3,5}/表示匹配3到5个数字的字符串。
7. 匹配0次或1次:/pattern?/,例如:/colou?r/表示匹配包含单词“color”或“colour”的字符串。
8. 匹配1次或多次:/pattern+/,例如:/bo+n/表示匹配一个或多个字母“o”的字符串。
9. 匹配0次或多次:/pattern*/,例如:/go*/表示匹配一个或多个字母“o”的字符串。
10. 匹配非字符集中的字符:/[^characters]/,例如:/[^aeiou]/表示匹配不包含元音字母的字符串。
Linux命令高级技巧使用awk和正则表达式进行高级数据分析和处理

Linux命令高级技巧使用awk和正则表达式进行高级数据分析和处理在Linux操作系统中,awk和正则表达式是进行高级数据分析和处理的强大工具。
它们可以帮助我们从复杂的数据集中提取、转换和处理数据,大大提高工作效率。
本文将介绍如何使用awk和正则表达式进行高级数据分析和处理的技巧。
一、awk命令简介awk是一种用于处理文本文件的命令行工具,也是Linux系统中的一种编程语言。
它以行为单位,逐行读取输入文件,并根据用户指定的规则进行处理。
awk的核心是模式-动作对,即根据某个模式匹配到的行执行相应的动作。
它具有强大的文本处理能力,支持自定义变量和函数,灵活性和扩展性非常高。
二、正则表达式介绍正则表达式是一种用于描述文本模式的方法,它可以帮助我们在文本中进行复杂的匹配和搜索操作。
在awk命令中,正则表达式常用于模式匹配和数据提取。
正则表达式的基本语法包括:字符、元字符、字符类、量词、位置限定符等。
在awk命令中,可以使用正则表达式对文本进行模式匹配,从而提取出符合要求的数据。
三、使用awk和正则表达式进行数据分析1. 提取指定字段awk命令可以通过指定字段分隔符,提取出文本中的指定字段。
例如,假设我们有一个以逗号分隔的数据文件data.csv,每行包含姓名、年龄、性别等字段,我们可以使用以下命令提取出所有行的姓名字段:```awk -F ',' '{print $1}' data.csv```上述命令中的-F参数指定字段分隔符为逗号,$1表示第一个字段。
2. 基于正则表达式进行模式匹配awk命令可以使用正则表达式对文本进行模式匹配。
例如,我们可以使用以下命令提取出包含特定关键词的行:```awk '/keyword/ {print}' data.txt```上述命令中的/keyword/表示匹配包含关键词"keyword"的行。
3. 使用正则表达式进行模式替换awk命令除了可以进行数据提取外,还可以使用正则表达式进行模式替换。
linux mv正则

linux mv正则Linux mv命令正则表达式详解一、概述在Linux操作系统中,mv命令用于移动或重命名文件或目录。
它是Linux系统中常用的命令之一,可以通过正则表达式来实现更加灵活的文件操作。
本文将详细介绍Linux mv命令中正则表达式的使用方法和常见应用场景。
二、基本语法mv命令基本语法如下:mv [参数] [源文件或目录] [目标文件或目录]参数说明:-f:强制覆盖已存在的目标文件或目录;-i:交互式操作,移动之前询问是否覆盖;-u:只有在目标文件或目录不存在时才执行移动操作;-v:显示移动过程中的详细信息。
三、正则表达式简介正则表达式是一种用于匹配和处理文本的强大工具,它可以根据特定的模式来搜索、替换和提取文本。
在Linux mv命令中,正则表达式可以用于匹配文件名,实现批量移动或重命名操作。
常用的正则表达式元字符:.:匹配任意单个字符;*:匹配前面的字符零次或多次;:匹配前面的字符零次或一次;+:匹配前面的字符一次或多次;[]:匹配方括号中列举的任意一个字符;^:匹配行的开始位置;$:匹配行的结束位置;\:转义字符,用于匹配特殊字符。
四、正则表达式示例1. 使用.匹配单个字符mv file1.txt file2.txt将file1.txt文件重命名为file2.txt。
2. 使用*匹配多个字符mv file*.txt dir/将以file开头,以.txt结尾的所有文件移动到dir目录下。
3. 使用?匹配单个字符mv file?.txt dir/将以file开头,然后是一个任意字符,最后是.txt的所有文件移动到dir目录下。
4. 使用[]匹配指定字符范围将以小写字母开头的所有文件移动到dir目录下。
5. 使用^匹配行的开始位置mv ^file1.txt dir/将除了file1.txt文件外的所有文件移动到dir目录下。
6. 使用$匹配行的结束位置mv file1.txt$ dir/将以file1.txt结尾的所有文件移动到dir目录下。
Linux正则表达式详解

Linux正则表达式详解在说linux正规表达式之前,还介绍下linux中查找⽂本⽂件常⽤的三个命令:1.grep : 最早的⽂本匹配程序,使⽤POSIX定义的基本正则表达式(BRE)来匹配⽂本。
2.egrep : 扩展式grep,其使⽤扩展式正规表达式(ERE)来匹配⽂本。
3.fgrep :快速grep,这个版本匹配固定字符串⽽⾮正则表达式。
并且是唯⼀可以并⾏匹配多个字符串的版本。
语法格式:grep [options ...] pattern-spec [files ...]⽤途:匹配⼀个或多个模式的⽂本⾏。
options:-E : 使⽤扩展正则表达式进⾏匹配, grep -E 或取代 egrep 命令。
-F : 使⽤固定字符串进⾏匹配, grep -F 或取代传统的fgrep命令。
-e : 通常第⼀个⾮选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放⼊单引号,并⽤换⾏字符分隔他们。
模式以减号开头时,为防⽌混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。
-f : 从pat-file⽂件读取模式作为匹配。
-i : 模式匹配时忽略⼤⼩写差异。
-l : 列出匹配模式的⽂件名称,⽽不是打印匹配的⾏。
-q : 静默的,如果匹配成功,不将匹配的⾏输出到标准输出;否则即是不成功。
-s : 不显⽰错误信息,通常与-q并⽤。
-v : 显⽰不匹配模式的⾏。
说明:可以同时查找多个⽂件中的内容,当指定多个⽂件时,每个显⽰出的⽂件⾏前会有⽂件名加⼀个冒号标识其来⾃哪个⽂件。
可以使⽤多个-e 或 -f 选项,建⽴要查找的模式列表。
1.正则表达式的组成(1).⼀般字符:没有特殊意义的字符(2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义2.如下讲下正则表达式中的常见meta字符(1).POSIX BRE与ERE中都有的meta字符:\ : 通常⽤于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}. : 匹配任何单个字符(除NUL)* : 匹配其前的任何数⽬或没有的单个字符,例: . 表⽰任⼀字符,则 .* 匹配任⼀字符的任意长度^ : 匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义$ : 匹配前⾯的正则表达式,在字符串或者⾏结尾处。
linux正则表达式语法

linux正则表达式语法Linux正则表达式是一种文本模式匹配工具,它可以在文本中快速搜索指定的字符串并进行替换或获取文本。
正则表达式可以帮助我们实现工作效率的提升,非常的有用。
在 Linux统中,正则表达式也可以使用,下面介绍 Linux 中强大的正则表达式语法。
Linux中最常用的正则表达式是tar、grep、sed等,可以使用它们来处理文本。
首先,介绍tar,tar用来压缩文件,也可以用正则表达式来提取文件,tar中的正则表达式是限于文件名。
例如,要提取所有jpg 文件,则可以使用这样的命令:tar -zxf *.jpg其次,介绍grep,这是文本搜索工具,通常可以用于搜索文本文件中的指定字符串,grep支持的正则表达式可以提升文本搜索的能力。
例如,要搜索文本文件中所有以“Linux”开头的字符串,可以使用这样的命令:grep -E Linux.* filename最后,介绍sed,这是文本编辑器,可以用于处理文本文件,例如替换文本文件中的某些字符串,sed支持的正则表达式可以提供更有效的文本处理。
例如,要把文本文件中所有以“Linux”开头的字符串替换为“CentOS”,则可以使用这样的命令:sed -i s/Linux/CentOS/g filename此外,Linux中的正则表达式还可以用于find命令,用于搜索系统中的文件或文件夹,可以使用正则表达式来缩小搜索范围,以提高搜索效率。
例如,要搜索/home目录中所有以“a”开头的文件夹,则可以使用这样的命令:find /home -namea*’ -type d正则表达式可以在Linux中用于各种场景,帮助我们提高工作效率,使工作变得更加高效便捷。
正则表达式的语法是比较复杂的,然而也是正则表达式的强大之处,只要理解了正则表达式的语法,就可以使用它来处理大量的文本,从而提高工作的效率。
最后,正则表达式是一种有用的文本搜索替换工具,在Linux系统中,有很多可以使用正则表达式的工具,可以帮助我们提升工作效率,当使用正则表达式来处理文本时,需要熟悉Linux中正则表达式的语法,以此达到最佳的效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 正则表达式1.正则表达式概述正则表达式又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
2.基本语法一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
例如:Handel、Hndel和Haendel这三个字符串,都可以由“H(a||ae)ndel”这个模式来描述。
大部分正则表达式的形式都有如下的结构:选择|竖直分隔符代表选择。
例如“gray|grey”可以匹配grey或gray。
数量限定某个字符后的数量限定符用来限定前面这个字符允许出现的个数。
最常见的数量限定符包括“+”、“?”和“*”(不加数量限定则代表出现一次且仅出现一次):+加号代表前面的字符必须至少出现一次。
(1次、或多次)。
例如,“goo+gle”可以匹配google、gooogle、goooogle等;?问号代表前面的字符最多只可以出现一次。
(0次、或1次)。
例如,“colou?r”可以匹配color 或者colour;*星号代表前面的字符可以不出现,也可以出现一次或者多次。
(0次、或1次、或多次)。
例如,“0*42”可以匹配42、042、0042、00042等。
匹配圆括号可以用来定义操作符的范围和优先度。
例如,“gr(a|e)y”等价于“gray|grey”,“(grand)?father”匹配father和grandfather。
上述这些构造子都可以自由组合,因此,“H(ae?|)ndel”和“H(a|ae|)ndel”是相同的。
精确的语法可能因不同的工具或程序而异。
3.正则表达式基础基本概念3.1.字符串组成对于字符串“a5”,是由两个字符“a”、“5”以及三个位置组成的,这一点对于正则表达式的匹配原理理解很重要。
3.2.占有字符和零宽度正则表达式匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式匹配的仅仅是位置,或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。
占有字符还是零宽度,是针对匹配的内容是否保存到最终的匹配结果中而言的。
占有字符是互斥的,零宽度是非互斥的。
也就是一个字符,同一时间只能由一个子表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配。
由一类字符书写的模式,其中有些字符不表示字符字面意义,而是表达控制或通配的功能。
3.3.正则表达式构成正则表达式由两种字符构成。
一种是在正则表达式中具体特殊意义的“元字符”,另一种是普通的“文本字符”。
元字符可以是一个字符,如“^”,也可以是一个字符序列,如“\w”。
元字符(Meta Character)1.[…] 字符组(CharacterClasses)字符组可以匹配[ ]中包含的任意一个字符。
虽然可以是任意一个,但只能是一个。
字符组支持由连字符“-”来表示一个范围。
当“-”前后构成范围时,要求前面字符的码位小于后面字符的码位。
[^…] 排除型字符组。
排除型字符组表示任意一个未列出的字符,同样只能是一个。
排除型字符组同样支持由连字符“-”来表示一个范围。
字符匹配:字符通配.:匹配任意单个字符。
[]:匹配指定集合中的任意单个字符。
[^]:匹配指定集合外的任意单个字符2.量词(Quantifier)量词表示一个子表达式可以匹配的次数。
量词可以用来修饰一个字符、字符组,或是用()括起来的子表达式。
一些常用的量词被定义成独立的元字符。
*:表达式匹配前面任意次,0,1或者多次,前面字符出现与否都匹配,相当于{0,}。
\+:表达式匹配1次或意多次,至少1次,相当于{1,}\?:表达式匹配0次或1次,相当于{0,1}\{m\}:表达式匹配其前面的字符m次\{m,n\}:表达式匹配最少m次,最多n次注意:在不是动态生成的正则表达式中,不要出现“{1}”这样的量词,如“\w{1}”在结果上等价于“\w”,但是会降低匹配效率和可读性,属于画蛇添足的做法。
.*:匹配任意长度的任意字符3.位置锚定^:行首锚定,出现最左侧$:行尾锚定,出现最右侧^$:表示空白行\<:词首锚定,在查找的单词模式的左侧;\<char\>:词尾锚定,在查找的单词模式的右侧;char\>\<pattern\>:匹配单词4.捕获组(Capture Group)捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或手动命名的组里,以供后面引用。
(Expression):普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里(?<name> Expression):命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里普通捕获组(在不产生歧义的情况下,简称捕获组)是以数字进行编号的,编号规则是以“(”从左到右出现的顺序,从1开始进行编号。
通常情况下,编号为0的组表示整个表达式匹配的内容。
命名捕获组可以通过捕获组名,而不是序号对捕获内容进行引用,提供了更便捷的引用方式,不用关注捕获组的序号,也不用担心表达式部分变更会导致引用错误的捕获组。
非捕获组:一些表达式中,不得不使用( ),但又不需要保存( )中子表达式匹配的内容,这时可以用非捕获组来抵消使用( )带来的副作用。
(?:Expression):进行子表达式Expression的匹配,并将匹配内容保存到最终的整个表达式的区配结果中,但Expression匹配的内容不单独保存到一个组内反向引用:捕获组匹配的内容,可以在正则表达式的外部程序中进行引用,也可以在表达式中进行引用,表达式中引用的方式就是反向引用。
反向引用通常用来查找重复的子串,或是限定某一子串成对出现。
\1,\2:对序号为1和2的捕获组的反向引用\k<name>:对命名为name的捕获组的反向引用举例:“(a|b)\1”在匹配“abaa”时,匹配成功,匹配到的结果是“aa”。
“(a|b)”在尝试匹配时,虽然既可以匹配“a”,也可以匹配“b”,但是在进行反向引用时,对应()中匹配的内容已经是固定的了。
我们来实验一下:我们要限定只找限定ab出现1-3次的:我们要求找到以a开始中间跟任意字符,再以b结尾的行,这个行后面再一次出现同样条件的行。
下面的例子能实现匹配以a开头以b结尾,但是中间的字符不一致也匹配。
我们使用分组的反向引用来实现:贪婪与懒惰当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。
以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。
如果用它来搜索aabab的话,它会匹配整个字符串aabab。
这被称为贪婪匹配。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。
前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。
这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
现在看看懒惰版的例子吧:a.*?b匹配最短的,以a开始,以b结束的字符串。
如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
懒惰限定符*? 重复任意次,但尽可能少重复+? 重复1次或更多次,但尽可能少重复?? 重复0次或1次,但尽可能少重复{n,m}? 重复n到m次,但尽可能少重复{n,}? 重复n次以上,但尽可能少重复5.grep,egrep,fgrep介绍Unix的grep家族包括grep、egrep和fgrep。
egrep和fgrep的命令只跟grep有很小不同。
egrep 是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。
linux 使用GNU版本的grep。
它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep 的功能grep:Global searchRegular expression and Print out the lineegrep:Extended Globalsearch Regular expression and Print out the linefgrep:Fast Global searchRegular expression and Print out the lineLinux grep是基础的正则表达式,命令用于在文件内查找指定的字符串。
grep (globalsearch regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep[-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将binary 文件以text 文件的方式搜寻数据-c :计算找到'搜寻字符串' 的次数-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有'搜寻字符串' 内容的那一行!--color=auto :可以将找到的关键词部分加上颜色的显示喔!-B :附带显示前面两行-A :附带显示后面两行-C :附带显示上下两行一起Linux egrep是扩展的正则表达式,命令用于在文件内查找指定的字符串。
egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。
egrep是用extendedregular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regularexpression比basic regular expression的表达更规范。