![正则表达式讲义_第1页](http://file4.renrendoc.com/view/24b21f1ca6bccb074f512b28d20ec146/24b21f1ca6bccb074f512b28d20ec1461.gif)
![正则表达式讲义_第2页](http://file4.renrendoc.com/view/24b21f1ca6bccb074f512b28d20ec146/24b21f1ca6bccb074f512b28d20ec1462.gif)
![正则表达式讲义_第3页](http://file4.renrendoc.com/view/24b21f1ca6bccb074f512b28d20ec146/24b21f1ca6bccb074f512b28d20ec1463.gif)
![正则表达式讲义_第4页](http://file4.renrendoc.com/view/24b21f1ca6bccb074f512b28d20ec146/24b21f1ca6bccb074f512b28d20ec1464.gif)
![正则表达式讲义_第5页](http://file4.renrendoc.com/view/24b21f1ca6bccb074f512b28d20ec146/24b21f1ca6bccb074f512b28d20ec1465.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
正则表达式讲义目录2入门简介3正则表达式起源4什么是正则表达式5范例讲解6PHP中使用正则表达式的函数7常用表达式8基本语法9学习方法10作业11参考资料入门简介简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sedshell程序等。此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。正则表达式起源正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。WarrenMcCulloch和WalterPitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956年,一位叫StephenKleene的数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。什么是正则表达式正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时,dir*.txt或ls*.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。范例讲解正则表达式是比较抽象的,如:“(19|20)(\d{2})-(\d{1,2})-(\d{1,2})”代表什么呢?如果不是很清楚,那也没关系,我们下面一步步地认识了解正则表达式,希望学完这一节,大家能够很轻松地了解上述表达式的意思。首先,让我们看看两个特别的字符:’^’和‘$’他们是分别用来匹配字符串的开始和结束,一下分别举例说明
"^The":匹配以"The"开头的字符串;"ofdespair$":匹配以"ofdespair"结尾的字符串;"^abc$":匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配"notice":匹配包含notice的字符串例:<?php$string="TheDog";$pattern="^The";if(ereg($pattern,$string)){ print"Ture";}else print"Flase";
?>结果是:Ture
"ab*":匹配字符串a和0个或者更多b组成的字符串("a","ab","abbb",etc.);"ab+":和上面一样,但最少有一个b("ab","abbb",etc.);"ab?":匹配0个或者一个b;"a?b+$":匹配以一个或者0个a再加上一个以上的b结尾的字符串.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}":匹配一个a后面跟两个b(一个也不能少)("abb");"ab{2,}":最少更两个b("abb","abbbb",etc.);"ab{3,5}":2-5个b("abbb","abbbb",or"abbbbb").
请注意大括号的使用规则是"{0,2}",不是"{,2}"),也就是必须指定起始数。另外,你可能注意到,'*','+',和'?'分别和一下三个范围标注是一样的,"{0,}","{1,}",和"{0,1}"。现在把一定数量的字符放到小括号里,比如:
"a(bc)*":匹配a后面跟0个或者一个"bc";"a(bc){1,5}":一个到5个"bc"
还有一个字符'│',相当于OR操作:"hi│hello":匹配含有"hi"或者"hello"的字符串;"(b│cd)ef":匹配含有"bef"或者"cdef"的字符串;"(a│b)*c":匹配含有这样-多个(包括0个)a或b,后面跟一个c的字符串的字符串;
一个点('.')可以代表所有的单一字符:"a.[0-9]":一个a跟一个字符再跟一个数字的(含有这样一个字符串的字符串将被匹配,以后省略此括号)"^.{3}$":以三个字符结尾.中括号括住的内容只匹配一个单一的字符"[ab]":匹配单个的a或者b(和"a│b"一样);"[a-d]":匹配'a'到'd'的单个字符(和"a│b│c│d"还有"[abcd]"效果一样);"^[a-zA-Z]":匹配以字母开头的字符串"[0-9]%":匹配含有形如x%的字符串",[a-zA-Z0-9]$":匹配以逗号在加一个数字或字母结尾的字符串你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^'作为开头(i.e.,"%[^a-zA-Z]%"匹配含有两个百分号里面有一个非字母的字符串).
如何构建一个模式来匹配货币数量的输入好了,现在我们要用我们所学的来干一些有用的事:构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式:"10000.00"和"10,000.00",或者没有小数部分,"10000"and"10,000".现在让我们开始构建这个匹配模式:^[1-9][0-9]*$这是所变量必须以非0的数字开头.但这也意味着单一的"0"也不能通过测试.以下是解决的方法:^(0│[1-9][0-9]*)$"只有0和不以0开头的数字与之匹配",我们也可以允许一个负号再数字之前:^(0│-?[1-9][0-9]*)$这就是:"0或者一个以0开头可能有一个负号在前面的数字."好了,好了现在让我们别那么严谨,允许以0开头.现在让我们放弃负号,因为我们在表示钱币的时候并不需要用到.我们现在指定模式用来匹配小数部分:^[0-9]+(.[0-9]+)?$这暗示匹配的字符串必须最少以一个阿拉伯数字开头.但是注意,在上面模式中"10."是不匹配的,只有"10"和"10.2"才可以.(你知道为什么吗)^[0-9]+(.[0-9]{2})?$我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成:^[0-9]+(.[0-9]{1,2})?$这将允许小数点后面有一到两个字符.现在我们加上用来增加可读性的逗号(每隔三位),我们可以这样表示:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$不要忘记加号'+'可以被乘号'*'替代如果你想允许空白字符串被输入话(为什么?).也不要忘记反斜杆’’在php字符串中可能会出现错误(很普遍的错误).现在,我们已经可以确认字符串了,我们现在把所有逗号都去掉str_replace(",","",$money)然后在把类型看成double然后我们就可以通过他做数学计算了.构造检查email的正则表达式好,让我们继续讨论怎么验证一个email地址.在一个完整的email地址中有三个部分:POP3用户名(在'@'左边的一切),'@',服务器名(就是剩下那部分).用户名可以含有大小写字母阿拉伯数字,句号('.'),减号('-'),and下划线('_').服务器名字也是符合这个规则,当然下划线除外.现在,用户名的开始和结束都不能是句点.服务器也是这样.还有你不能有两个连续的句点他们之间至少存在一个字符,好现在我们来看一下怎么为用户名写一个匹配模式:^[_a-zA-Z0-9-]+$现在还不能允许句号的存在.我们把它加上:^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$上面的意思就是说:"以至少一个规范字符(除.以外)开头,后面跟着0个或者多个以点开始的字符串."简单化一点,我们可以用eregi()取代ereg().eregi()对大小写不敏感,我们就不需要指定两个范围"a-z"和"A-Z"–只需要指定一个就可以了:^[_a-z0-9-]+(.[_a-z0-9-]+)*$后面的服务器名字也是一样,但要去掉下划线:^[a-z0-9-]+(.[a-z0-9-]+)*$
现在只需要用”@”把两部分连接:^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$
这就是完整的email认证匹配模式了,只需要调用eregi(‘^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$’,$eamil)就可以得到是否为email了PHP中使用正则表达式的函数1.用正则表达式查找子字符串:查找字符串是正则表达式的主要应用,在PHP中,ereg();eregi();preg_match();preg_match_all()。ereg()与eregi()函数搜索字符串search,在pattern中寻找与正则表达式相匹配的字符串,如果发现了与pattern的子表达式相匹配的字符串,这些字符串将会存储在数组matches中,每个数组元素对应一个子表达式。(函数eregi()除了不区分大小写外,其它功能与ereg()一样)以下代码片断接受ISO格式的日期(YYYY-MM-DD)然后以DD.MM.YYYY格式显示:<?phpif(ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$date,$regs)){echo"$regs[3].$regs[2].$regs[1]";}else{echo"Invaliddateformat:$date";}?>preg_match()与preg_match_all()区别.preg_match()返回pattern所匹配的次数。要么是0次(没有匹配)或1次,因为preg_match()在第一次匹配之后将停止搜索。preg_match_all()则相反,会一直搜索到subject的结尾处。如果出错preg_match()返回FALSE。例:从URL中取出域名<?php//从URL中取得主机名preg_match("/^(http:\/\/)?([^\/]+)/i","/index.html",$matches);$host=$matches[2];
//从主机名中取得后面两段preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);echo"domainnameis:{$matches[0]}\n";?>本例将输出:domainnameis:2.使用正则表达式替换字符串:ereg_replace()和eregi_replace();preg_replace();函数ereg_replace()和eregi_replace()在字符串seach中查找正则表达式pattern的字符串,并且用字符串replacement来替换.eregi_replace()不区分大小写<?php$patterns=array("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/","/^\s*{(\w+)}\s*=/");$replace=array("\\3/\\4/\\1\\2","$\\1=");printpreg_replace($patterns,$replace,"{startDate}=1999-5-27");?>本例将输出:$startDate=5/27/19993.使用正则表达式分割字符串函数是split();spliti();preg_split();preg_spliti();例:split()/spliti()<?php//分隔符可以是斜线,点,或横线$date="04/30/1973";list($month,$day,$year)=split('[/.-]',$date);echo"Month:$month;Day:$day;Year:$year<br/>\n";?>例:preg_split()/preg_spliti()<?php$str='hypertextlanguageprogramming';$chars=preg_split('//',$str,-1,PREG_SPLIT_OFFSET_CAPTURE);print_r($chars);?>将输出:Array([0]=>Array([0]=>hypertext[1]=>0)
[1]=>Array([0]=>language[1]=>10)
[2]=>Array([0]=>programming[1]=>19)
)常用表达式"^\d+$"//非负整数(正整数+0)"^[0-9]*[1-9][0-9]*$"//正整数"^((-\d+)|(0+))$"//非正整数(负整数+0)"^-[0-9]*[1-9][0-9]*$"//负整数"^-?\d+$"//整数"^\d+(\.\d+)?$"//非负浮点数(正浮点数+0)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+0)"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数"^(-?\d+)(\.\d+)?$"//浮点数"^[A-Za-z]+$"//由26个英文字母组成的字符串"^[A-Z]+$"//由26个英文字母的大写组成的字符串"^[a-z]+$"//由26个英文字母的小写组成的字符串"^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串"^\w+$"//由数字、26个英文字母或者下划线组成的字符串"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$///年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$///月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"//Emil/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$///电话号码"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"//IP地址
匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s|]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$基本语法元字符正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。有两组不同的元字符:一种是模式中除了方括号内都能被识别的,还有一种是在方括号内被识别的。方括号之外的元字符有这些:
\有数种用途的通用转义符^断言目标的开头(或在多行模式下行的开头,即紧随一换行符之后)$断言目标的结尾(或在多行模式下行的结尾,即紧随一换行符之前).匹配除了换行符外的任意一个字符(默认情况下)[字符类定义开始]字符类定义结束|开始一个多选一的分支(子模式开始)子模式结束?扩展(的含义,也是0或1数量限定符,以及数量限定符最小值匹配0个或多个的数量限定符+匹配1个或多个的数量限定符{最少/最多数量限定开始}最少/最多数量限定结束模式中方括号内的部分称为“字符类”。字符类中可用的元字符为:\通用转义字符^排除字符类,但仅当其为第一个字符时有效-指出字符范围]结束字符类反斜线(\)反斜线字符有几种用途。首先,如果其后跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义。此种将反斜线用作转义字符的用法适用于无论是字符类之中还是之外。例如,如果想匹配一个“*”字符,则在模式中用“\*”。这适用于无论下一个字符是否会被当作元字符来解释,因此在非字母数字字符之前加上一个“\”来指明该字符就代表其本身总是安全的。尤其是,如果要匹配一个反斜线,用“\\”。反斜线的第二种用途提供了一种在模式中以可见方式去编码不可打印字符的方法。并没有不可打印字符出现的限制,除了代表模式结束的二进制零以外。但用文本编辑器来准备模式的时候,通常用以下的转义序列来表示那些二进制字符更容易一些:\aalarm,即BEL字符(0x07)\cx"control-x",其中x是任意字符\eescape(0x1B)\f换页符formfeed(0x0C)\n换行符newline(0x0A)\r回车符carriagereturn(0x0D)\t制表符tab(0x09)\xhh十六进制代码为hh的字符\ddd八进制代码为ddd的字符,或backreference
“\cx”的精确效果如下:如果“x”是小写字母,则被转换为大写字母。接着字符中的第6位(0x40)被反转。从而“\cz”成为0x1A,但“\c{”成为0x3B,而“\c;”成为0x7B。在“\x”之后最多再读取两个十六进制数字(其中的字母可以是大写或小写)。在UTF-8模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列\xhh如果其值大于127的话则匹配了一个双字节UTF-8字符。在“\0”之后最多再读取两个八进制数字。以上两种情况下,如果少于两个数字,则只使用已出现的。因此序列“\0\x\07”代表两个二进制的零加一个BEL字符。如果是八进制数字则确保在开始的零后面再提供两个数字。处理反斜线后面跟着一个不是0的数字比较复杂。在字符类之外,PCRE以十进制数字读取该数字及其后面的数字。如果数字小于10,或者之前表达式中捕获到至少该数字的左圆括号,则这个序列将被作为逆向引用。有关此如何运作的说明在后面,以及括号内的子模式。在字符类之中,或者如果十进制数字大于9并且之前没有那么多捕获的子模式,PCRE重新从反斜线开始读取其后的最多三个八进制数字,并以最低位的8个比特产生出一个单一字节。任何其后的数字都代表自身。例如:\040另一种表示空格的方法\40同上,如果之前捕获的子模式少于40个的话\7总是一个逆向引用\11可能是个逆向引用,或者是制表符tab\011总是表示制表符tab\0113表示制表符tab后面跟着一个字符“3”\113表示八进制代码为113的字符(因为不能超过99个逆向引用)\377表示一个所有的比特都是1的字节\81要么是一个逆向引用,要么是一个二进制的零后面跟着两个字符“8”和“1”
注意八进制值100或更大的值之前不能以零打头,因为不会读取(反斜线后)超过三个八进制数字。所有的定义了一个单一字节的序列可以用于字符类之中或之外。此外,在字符类之中,序列“\b”被解释为反斜线字符(0x08),而在字符类之外有不同含义(见下面)。反斜线的第三个用法是指定通用字符类型:\d任一十进制数字\D任一非十进制数的字符\s任一空白字符\S任一非空白字符\w任一“字”的字符\W任一“非字”的字符
任何一个转义序列将完整的字符组合分割成两个分离的部分。任一给定的字符匹配一个且仅一个转义序列。“字”的字符是指任何一个字母或数字或下划线,也就是说,任何可以是Perl"word"的字符。字母和数字的定义由PCRE字符表控制,可能会根据指定区域的匹配而改变(见上面的“区域支持”)。举例说,在"fr"(French)区域,某些编码大于128的字符用来表示重音字母,这些字符能够被\w所匹配。这些字符类型序列可以出现在字符类之中和之外。每一个匹配相应类型中的一个字符。如果当前匹配点在目标字符串的结尾,以上所有匹配都失败,因为没有字符可供匹配。反斜线的第四个用法是某些简单的断言。断言是指在一个匹配中的特定位置必须达到的条件,并不会消耗目标字符串中的任何字符。子模式中更复杂的断言的用法在下面描述。反斜线的断言有:\b字分界线\B非字分界线\A目标的开头(独立于多行模式)\Z目标的结尾或位于结尾的换行符前(独立于多行模式)\z目标的结尾(独立于多行模式)\G目标中的第一个匹配位置模式修正符下面列出了当前在PCRE中可能使用的修正符。括号中是这些修正符的内部PCRE名。修正符中的空格和换行被忽略,其它字符会导致错误。i(PCRE_CASELESS)如果设定此修正符,模式中的字符将同时匹配大小写字母。m(PCRE_MULTILINE)默认情况下,PCRE将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了D修正符)。这和Perl是一样的。当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和Perl的/m修正符是等效的。如果目标字符串中没有“\n”字符或者模式中没有^或$,则设定此修正符没有任何效果。s(PCRE_DOTALL)如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和Perl的/s修正符是等效的。排除字符类例如[^a]总是匹配换行符的,无论是否设定了此修正符。x(PCRE_EXTENDED)如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的#以及下一个换行符之间的所有字符,包括两头,也都被忽略。这和Perl的/x修正符是等效的,使得可以在复杂的模式中加入注释。然而注意,这仅适用于数据字符。空白字符可能永远不会出现于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年抗渗碳砖项目可行性研究报告
- 2025年多槽超声波清洗机项目可行性研究报告
- 2025年印染用助剂项目可行性研究报告
- 2025年低温空调项目可行性研究报告
- 2025至2030年中国高密度聚乙烯管材数据监测研究报告
- 2025至2030年镀前处理酸性除油剂项目投资价值分析报告
- 2025至2030年警灯三轮童车项目投资价值分析报告
- 2025至2030年福美胂可湿性粉剂项目投资价值分析报告
- 2025至2030年火炮半轴模锻件项目投资价值分析报告
- 2025至2030年杆套项目投资价值分析报告
- 四年级语文下册第六单元【集体备课】(教材解读+教学设计)
- 2024版义务教育小学科学课程标准
- 苏教版小学信息技术五年级下册五年级下册教案全集
- 学校托管工作方案
- 肾性高血压的护理查房
- 苏教版八年级数学上册期末试卷及答案【完美版】
- 法院拍卖议价协议书
- 2021年人教版八年级物理上册期末考试卷(完美版)
- TB 10009-2016 铁路电力牵引供电设计规范
- 2024年东南亚鸡蛋分级包装设备市场深度研究及预测报告
- 2023高考数学艺考生一轮复习基础讲义(学生版)
评论
0/150
提交评论