关于作者

用户名:fanyingjie
笔名:清水白菜
地区: 浙江-杭州
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



※→ 【JAVA 帮助文档】

※→ 【友情链接】

※→ 【著名网站】

※→ 【语言学习网站】

※→ 【在线服务网站】

※→ 【JAVA 国际网站】

访问统计:
文章个数:225
评论个数:21
留言条数:17




Powered by BlogDriver 2.1

JAVA——咖啡馆

 

    欢迎访问IT木头的博客,有空常来《JAVA——咖啡馆》坐坐,坐下来喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站大部分是转载文章,如果有版权问题请与我联系。【※ 联系方式:QQ:578893110 或 MSN:yingjie-fan@hotmail.com ※】〖String--->int〗 【int i=Integer.parseInt(String)】〖int---->String〗 【String Str=Integer.toString(int)】

文章

博客搬迁【http://www.blogjava.net/fanyingjie】  (作者置顶)

博客搬迁,新地址:http://www.blogjava.net/fanyingjie/

- 作者: 清水白菜 2008年01月4日, 星期五 16:40  回复(0) |  引用(0) 加入博采

eclipse 插件集锦  (作者置顶)

XML Schema Infoset Model (XSD)

功能:XML Schema Infoset Model 是个参考库提供用于测试,创建或者修改 W3C XML Schema 的 API。
主页:http://www.eclipse.org/xsd/

Graphical Editing Framework

功能:这个插件允许开发者快速开发图形编辑器。
主页:http://www.eclipse.org/gef/

Eclipse Modeling Framework (EMF)

功能:EMF是一个建模框架和基于结构化数据模型的代码生成工具。它能够将按照约定所进行描述的XML和其它EMF工具产生或运行时支持一套JAVA类模型、一套用于查看和处理模型操作的接口类。这套模型可以用包含注释的JAVA代码、XML文档或者用ROSE之类的建模工具所制作的模型导成EMF。最重要的是,EMF提供其它基于EMF的工具及应用程序的基础协作平台。
主页:http://www.eclipse.org/emf/

Eclipse Web Tools Platform (WTP)

版本:1.0
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free
开发状况: Beta
公司: eclipse.org
功能:包含了 HTML , javascript , CSS , JSP , SQL , DTD , XSD & WSDL 编辑器,提供图形化的 XSD & WSDL 编辑器,J2EE 工程构建,建模,发布。Web service 向导数据库访问和查询工具,五星级插件!强烈推荐。
主页:http://www.eclipse.org/webtools/index.html

Lomboz

版本:Build-20050526
开发状况: 5 - Production/Stable
使用协议:GNU Lesser General Public License (LGPL)
功能:Lomaz 是著名的 eclipse 的 J2EE 开发插件,它使用了以下开源技术:Jasper,Xdoclet,Axis 和 Ant,完全支持编码,发布,测试和调试的开发环节。
主页:http://forge.objectweb.org/projects/lomboz

Myeclipse

版本:3.8.4
支持的 Eclipse 版本: 2.1 & 3.0
使用证书:commerce
开发状况:stable
公司: Genuitec, LLC
功能:

要钱的东西,不过是最强悍的 J2EE 开发插件。
可视化的 JSF 和 Struts 开发,XML 编辑器,Hibernate 支持,UML建模,应用服务器连接,支持 EJB 开发,同步发布 JSP (不必发布整个应用程序)……
非常强大的工具,使用一下就能体会到了 : )

Sysdeo Eclipse Tomcat Launcher plugin

版本:3.1 Beta
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free
开发状况: Beta
公司: Sysdeo
功能:

在Elipse中启动停止重启Tomcat
注册 Tomcat 进程到 Eclipse 调试器
创建 WAR 文件
把 Java 工程添加到 Tomcat Classpath 中
设置 Tomcat JVM 参数,Classpath 和 bootclasspath
把 Tomcat 工程导出为 WAR 文件
选择 Tomcat 配置文件

插件主页:http://www.eclipse-plugins.info/eclipse/index.jsp

JavaScript Editor

版本:0.0.9b
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:Javascript 编辑,提供了代码高亮,自动完成和内容纲要的功能。
插件主页:http://jseditor.sourceforge.net/

CSSEditor

版本:0.0.4
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:代码高亮,内容提示,纲要栏显示 CSS 规则,输入时显示错误。
主页:http://csseditor.sourceforge.net/

Exadel Studio

版本:2.5
支持的 Eclipse 版本: 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:支持 JSF,Struts,JSP 编辑(支持2.0),Spring Framework,Hibernate,数据库浏览,图形化的属性编辑器,CSS 编辑器,JavaScript 编辑器,图像浏览,XSD 编辑,支持 XML Schema,支持超过 20 种应用服务器的发布……功能非常强大。

Struts Console

版本:4.8
支持的 Eclipse 版本: ALL
使用证书: Free
开发状况: stable
公司: N/A
功能:支持 *.tld文件,Struts 1.0 - 1.2 配置文件, Tiles配置文件, Validator 1.0 和 1.1配置文件,支持主流的 Java IDEs。
主页:http://www.jamesholmes.com/struts/console/

Faces Console

版本:1.7
支持的 Eclipse 版本: ALL
使用证书: Free
开发状况: stable
公司: N/A
功能:完全支持 JSF 配置文件,支持 JSP Tag Library 文件,支持主流的 Java IDEs。
主页:http://www.jamesholmes.com/JavaServerFaces/console/

HTML Tidy Eclipse Plug-in

版本:1.2.1
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:格式化和校验 (X)HTML 和 XML 代码。本身并不提供编辑器。
主页:http://eclipsetidy.sourceforge.net/

Eclipse HTML Editor Plugin

版本:N/A
支持的 Eclipse 版本: 2.1 & 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:

Eclipse HTML Editor 是 HTML/JSP/XML 编辑插件。
HTML/JSP/XML/CSS 高亮。
HTML/JSP 预览
JSP/XML 校验
Contents 帮助(HTML Tags/Attributes, XML based on DTD and JSP taglib and more)
创建 HTML/JSP/XML 文件向导
代码折叠
图片浏览
CSS 代码完成

主页:http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor

PHPeclipse(PHP Development Toolkit )

版本:N/A
支持的 Eclipse 版本: 3.0
使用证书: Free CPL
开发状况: Beta
公司: N/A
功能:eclipse 的 PHP 开发环境,支持代码高亮和代码自动完成,预览 PHP 页面。可以在eclipse中控制 apache,mysql 的启动,停止和重启。功能强大!
主页:http://www.phpeclipse.de/tiki-view_articles.php

XMLBuddy

版本:N/A
支持的 Eclipse 版本: 3.0
使用证书: Free & commerce
开发状况: stable
公司: N/A
功能:这是个免费版本,很好用,试试就知道了。
主页:http://www.xmlbuddy.com/

Doclipse

版本:N/A
支持的 Eclipse 版本: 3.0
使用证书: Free
开发状况: stable
公司: N/A
功能:看名字就知道了,在 eclipse 中使用 javadoc 标签的辅助工具。
主页:http://www.beust.com/doclipse/

jadclipse

版本:2.06
支持的 Eclipse 版本: 所有
使用证书: Free
开发状况: stable
公司: N/A
功能:很棒的工具,可以在 eclipse 中直接反编译 class 文件!
主页:

- 作者: 清水白菜 2007年06月11日, 星期一 10:02  回复(0) |  引用(0) 加入博采

揭开正则表达式的神秘面纱  (作者置顶)

揭开正则表达式的神秘面纱

[原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regref.htm]

引言

    正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。

    正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更强大。

   正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。

    文章中的每一个举例,都可以点击进入到测试页面进行测试。闲话少说,开始。


1. 正则表达式规则

1.1 普通字符

    字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

    举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)

    举例2:表达式 "bcd",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。


1.2 简单的转义字符

    一些不便书写的字符,采用在前面加 "\" 的方法。这些字符其实我们都已经熟知了。

表达式

可匹配

\r, \n

代表回车和换行符

\t

制表符

\\

代表 "\" 本身

    还有其他一些在后边章节中有特殊用处的标点符号,在前面加 "\" 后,就代表该符号本身。比如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "\^" 和 "\$"。

表达式

可匹配

\^

匹配 ^ 符号本身

\$

匹配 $ 符号本身

\.

匹配小数点(.)本身

    这些转义字符的匹配方法与 "普通字符" 是类似的。也是匹配与之相同的一个字符。

    举例1:表达式 "\$d",在匹配字符串 "abc$de" 时,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。


1.3 能够与 '多种字符' 匹配的表达式

    正则表达式中的一些表示方法,可以匹配 '多种字符' 其中的任意一个字符。比如,表达式 "\d" 可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。这就好比玩扑克牌时候,大小王可以代替任意一张牌,但是只能代替一张牌。

表达式

可匹配

\d

任意一个数字,0~9 中的任意一个

\w

任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个

\s

包括空格、制表符、换页符等空白字符的其中任意一个

.

小数点可以匹配除了换行符(\n)以外的任意一个字符

    举例1:表达式 "\d\d",在匹配 "abc123" 时,匹配的结果是:成功;匹配到的内容是:"12";匹配到的位置是:开始于3,结束于5。

    举例2:表达式 "a.\d",在匹配 "aaa100" 时,匹配的结果是:成功;匹配到的内容是:"aa1";匹配到的位置是:开始于1,结束于4。


1.4 自定义能够匹配 '多种字符' 的表达式

    使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。

表达式

可匹配

[ab5@]

匹配 "a" 或 "b" 或 "5" 或 "@"

[^abc]

匹配 "a","b","c" 之外的任意一个字符

[f-k]

匹配 "f"~"k" 之间的任意一个字母

[^A-F0-3]

匹配 "A"~"F","0"~"3" 之外的任意一个字符

    举例1:表达式 "[bcd][bcd]" 匹配 "abc123" 时,匹配的结果是:成功;匹配到的内容是:"bc";匹配到的位置是:开始于1,结束于3。

    举例2:表达式 "[^abc]" 匹配 "abc123" 时,匹配的结果是:成功;匹配到的内容是:"1";匹配到的位置是:开始于3,结束于4。


1.5 修饰匹配次数的特殊符号

    前面章节中讲到的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。

    使用方法是:"次数修饰"放在"被修饰的表达式"后边。比如:"[bcd][bcd]" 可以写成 "[bcd]{2}"。

表达式

作用

{n}

表达式重复n次,比如:"\w{2}" 相当于 "\w\w""a{5}" 相当于 "aaaaa"

{m,n}

表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"

{m,}

表达式至少重复m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"...

?

匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

+

表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...

*

表达式不出现或出现任意次,相当于 {0,},比如:"\^*b"可以匹配 "b","^^^b"...

    举例1:表达式 "\d+\.?\d*" 在匹配 "It costs $12.5" 时,匹配的结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于10,结束于14。

    举例2:表达式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 时,匹配的结果是:成功;匹配到的内容是:"goooooogle";匹配到的位置是:开始于7,结束于17。


1.6 其他一些代表抽象意义的特殊符号

    一些符号在表达式中代表抽象的特殊意义:

表达式

作用

^

与字符串开始的地方匹配,不匹配任何字符

$

与字符串结束的地方匹配,不匹配任何字符

\b

匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

    进一步的文字说明仍然比较抽象,因此,举例帮助大家理解。

    举例1:表达式 "^aaa" 在匹配 "xxx aaa xxx" 时,匹配结果是:失败。因为 "^" 要求与字符串开始的地方匹配,因此,只有当 "aaa" 位于字符串的开头的时候,"^aaa" 才能匹配,比如:"aaa xxx xxx"

    举例2:表达式 "aaa$" 在匹配 "xxx aaa xxx" 时,匹配结果是:失败。因为 "$" 要求与字符串结束的地方匹配,因此,只有当 "aaa" 位于字符串的结尾的时候,"aaa$" 才能匹配,比如:"xxx xxx aaa"

    举例3:表达式 ".\b." 在匹配 "@@@abc" 时,匹配结果是:成功;匹配到的内容是:"@a";匹配到的位置是:开始于2,结束于4。
    进一步说明:"\b" 与 "^" 和 "$" 类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是 "\w" 范围,另一边是 非"\w" 的范围。

    举例4:表达式 "\bend\b" 在匹配 "weekend,endfor,end" 时,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18。

    一些符号可以影响表达式内部的子表达式之间的关系:

表达式

作用

|

左右两边表达式之间 "或" 关系,匹配左边或者右边

( )

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

    举例5:表达式 "Tom|Jack" 在匹配字符串 "I'm Tom, he is Jack" 时,匹配结果是:成功;匹配到的内容是:"Tom";匹配到的位置是:开始于4,结束于7。匹配下一个时,匹配结果是:成功;匹配到的内容是:"Jack";匹配到的位置时:开始于15,结束于19。

    举例6:表达式 "(go\s*)+" 在匹配 "Let's go go go!" 时,匹配结果是:成功;匹配到内容是:"go go go";匹配到的位置是:开始于6,结束于14。

    举例7:表达式 "(\d+\.?\d*)" 在匹配 "$10.9,¥20.5" 时,匹配的结果是:成功;匹配到的内容是:"¥20.5";匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:"20.5"。


2. 正则表达式中的一些高级规则

2.1 匹配次数中的贪婪与非贪婪

    在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 "dxxxdxxxd",举例如下:

表达式

匹配结果

(d)(\w+)

"\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"

(d)(\w+)(d)

"\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "\w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"\w+" 可以 "让出" 它本来能够匹配的最后一个 "d"

    由此可见,"\w+" 在匹配的时候,总是尽可能多的匹配符合它规则的字符。虽然第二个举例中,它没有匹配最后一个 "d",但那也是为了让整个表达式能够匹配成功。同理,带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配,带 "?" 的表达式在可匹配可不匹配的时候,也是尽可能的 "要匹配"。这 种匹配原则就叫作 "贪婪" 模式 。

    非贪婪模式:

    在修饰匹配次数的特殊符号后再加上一个 "?" 号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的 "不匹配"。这种匹配原则叫作 "非贪婪" 模式,也叫作 "勉强" 模式。如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。举例如下,针对文本 "dxxxdxxxd" 举例:

表达式

匹配结果

(d)(\w+?)

"\w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"\w+?" 只匹配了一个 "x"

(d)(\w+?)(d)

为了让整个表达式匹配成功,"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"\w+?" 匹配 "xxx"

    更多的情况,举例如下:

    举例1:表达式 "<td>(.*)</td>" 与字符串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匹配时,匹配的结果是:成功;匹配到的内容是 "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符串, 表达式中的 "</td>" 将与字符串中最后一个 "</td>" 匹配。

    举例2:相比之下,表达式 "<td>(.*?)</td>" 匹配举例1中同样的字符串时,将只得到 "<td><p>aa</p></td>", 再次匹配下一个时,可以得到第二个 "<td><p>bb</p></td>"。


2.2 反向引用 \1, \2...

    表达式在匹配时,表达式引擎会将小括号 "( )" 包含的表达式所匹配到的字符串记录下来。在获取匹配结果的时候,小括号包含的表达式所匹配到的字符串可以单独获取。这一点,在前面的举例中,已经多次展示了。在实际应用场合中,当用某种边界来查找,而所要获取的内容又不包含边界时,必须使用小括号来指定所要的范围。比如前面的 "<td>(.*?)</td>"。

    其实,"小括号包含的表达式所匹配到的字符串" 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。表达式后边的部分,可以引用前面 "括号内的子匹配已经匹配到的字符串"。引用方法是 "\" 加上一个数字。"\1" 引用第1对括号内匹配到的字符串,"\2" 引用第2对括号内匹配到的字符串……以此类推,如果一对括号内包含另一对括号,则外层的括号先排序号。换句话说,哪一对的左括号 "(" 在前,那这一对就先排序号。

    举例如下:

    举例1:表达式 "('|")(.*?)(\1)" 在匹配 " 'Hello', "World" " 时,匹配结果是:成功;匹配到的内容是:" 'Hello' "。再次匹配下一个时,可以匹配到 " "World" "。

    举例2:表达式 "(\w)\1{4,}" 在匹配 "aa bbbb abcdefg ccccc 111121111 999999999" 时,匹配结果是:成功;匹配到的内容是 "ccccc"。再次匹配下一个时,将得到 999999999。这个表达式要求 "\w" 范围的字符至少重复5次,注意与 "\w{5,}" 之间的区别

    举例3:表达式 "<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>" 在匹配 "<td id='td1' style="bgcolor:white"></td>" 时,匹配结果是成功。如果 "<td>" 与 "</td>" 不配对,则会匹配失败;如果改成其他配对,也可以匹配成功。


2.3 预搜索,不匹配;反向预搜索,不匹配

    前面的章节中,我讲到了几个代表抽象意义的特殊符号:"^","$","\b"。它们都有一个共同点,那就是:它们本身不匹配任何字符,只是对 "字符串的两头" 或者 "字符之间的缝隙" 附加了一个条件。理解到这个概念以后,本节将继续介绍另外一种对 "两头" 或者 "缝隙" 附加条件的,更加灵活的表示方法。

    正向预搜索:"(?=xxxxx)","(?!xxxxx)"

    格式:"(?=xxxxx)",在被匹配的字符串中,它对所处的 "缝隙" 或者 "两头" 附加的条件是:所在缝隙的右侧,必须能够匹配上 xxxxx 这部分的表达式。因为它只是在此作为这个缝隙上附加的条件,所以它并不影响后边的表达式去真正匹配这个缝隙之后的字符。这就类似 "\b",本身不匹配任何字符。"\b" 只是将所在缝隙之前、之后的字符取来进行了一下判断,不会影响后边的表达式来真正的匹配。

    举例1:表达式 "Windows (?=NT|XP)" 在匹配 "Windows 98, Windows NT, Windows 2000" 时,将只匹配 "Windows NT" 中的 "Windows ",其他的 "Windows " 字样则不被匹配。

    举例2:表达式 "(\w)((?=\1\1\1)(\1))+" 在匹配字符串 "aaa ffffff 999999999" 时,将可以匹配6个"f"的前4个,可以匹配9个"9"的前7个。这个表达式可以读解成:重复4次以上的字母数字,则匹配其剩下最后2位之前的部分。当然,这个表达式可以不这样写,在此的目的是作为演示之用。

    格式:"(?!xxxxx)",所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式。

    举例3:表达式 "((?!\bstop\b).)+" 在匹配 "fdjka ljfdl stop fjdsla fdj" 时,将从头一直匹配到 "stop" 之前的位置,如果字符串中没有 "stop",则匹配整个字符串。

    举例4:表达式 "do(?!\w)" 在匹配字符串 "done, do, dog" 时,只能匹配 "do"。在本条举例中,"do" 后边使用 "(?!\w)" 和使用 "\b" 效果是一样的。

    反向预搜索:"(?<=xxxxx)","(?<!xxxxx)"

    这两种格式的概念和正向预搜索是类似的,反向预搜索要求的条件是:所在缝隙的 "左侧",两种格式分别要求必须能够匹配和必须不能够匹配指定表达式,而不是去判断右侧。与 "正向预搜索" 一样的是:它们都是对所在缝隙的一种附加条件,本身都不匹配任何字符。

    举例5:表达式 "(?<=\d{4})\d+(?=\d{4})" 在匹配 "1234567890123456" 时,将匹配除了前4个数字和后4个数字之外的中间8个数字。由于 JScript.RegExp 不支持反向预搜索,因此,本条举例不能够进行演示。很多其他的引擎可以支持反向预搜索,比如:Java 1.4 以上的 java.util.regex 包,.NET 中System.Text.RegularExpressions 命名空间,以及本站推荐的最简单易用的 DEELX 正则引擎


3. 其他通用规则

    还有一些在各个正则表达式引擎之间比较通用的规则,在前面的讲解过程中没有提到。

3.1 表达式中,可以使用 "\xXX" 和 "\uXXXX" 表示一个字符("X" 表示一个十六进制数)

形式

字符范围

\xXX

编号在 0 ~ 255 范围的字符,比如:空格可以使用 "\x20" 表示

\uXXXX

任何字符可以使用 "\u" 再加上其编号的4位十六进制数表示,比如:"\u4E2D"

3.2 在表达式 "\s","\d","\w","\b" 表示特殊意义的同时,对应的大写字母表示相反的意义

表达式

可匹配

\S

匹配所有非空白字符("\s" 可匹配各个空白字符)

\D

匹配所有的非数字字符

\W

匹配所有的字母、数字、下划线以外的字符

\B

匹配非单词边界,即左右两边都是 "\w" 范围或者左右两边都不是 "\w" 范围时的字符缝隙

3.3 在表达式中有特殊意义,需要添加 "\" 才能匹配该字符本身的字符汇总

字符

说明

^

匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"

$

匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"

( )

标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"

[ ]

用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" 和 "\]"

{ }

修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"

.

匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."

?

修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?"

+

修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "\+"

*

修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"

|

左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"

3.4 括号 "( )" 内的子表达式,如果希望匹配结果不进行记录供以后使用,可以使用 "(?:xxxxx)" 格式

    举例1:表达式 "(?:(\w)\1)+" 匹配 "a bbccdd efg" 时,结果是 "bbccdd"。括号 "(?:)" 范围的匹配结果不进行记录,因此 "(\w)" 使用 "\1" 来引用。

3.5 常用的表达式属性设置简介:Ignorecase,Singleline,Multiline,Global

表达式属性

说明

Ignorecase

默认情况下,表达式中的字母是要区分大小写的。配置为 Ignorecase 可使匹配时不区分大小写。有的表达式引擎,把 "大小写" 概念延伸至 UNICODE 范围的大小写。

Singleline

默认情况下,小数点 "." 匹配除了换行符(\n)以外的字符。配置为 Singleline 可使小数点可匹配包括换行符在内的所有字符。

Multiline

默认情况下,表达式 "^" 和 "$" 只匹配字符串的开始 ① 和结尾 ④ 位置。如:

①xxxxxxxxx②\n
③xxxxxxxxx④

配置为 Multiline 可以使 "^" 匹配 ① 外,还可以匹配换行符之后,下一行开始前 ③ 的位置,使 "$" 匹配 ④ 外,还可以匹配换行符之前,一行结束 ② 的位置。

Global

主要在将表达式用来替换时起作用,配置为 Global 表示替换所有的匹配。


4. 其他提示

4.1 如果想要了解高级的正则引擎还支持那些复杂的正则语法,可参见本站 DEELX 正则引擎的说明文档

4.2 如果要要求表达式所匹配的内容是整个字符串,而不是从字符串中找一部分,那么可以在表达式的首尾使用 "^" 和 "$",比如:"^\d+$" 要求整个字符串只有数字。

4.3 如果要求匹配的内容是一个完整的单词,而不会是单词的一部分,那么在表达式首尾使用 "\b",比如:使用 "\b(if|while|else|void|int……)\b" 来匹配程序中的关键字

4.4 表达式不要匹配空字符串。否则会一直得到匹配成功,而结果什么都没有匹配到。比如:准备写一个匹配 "123"、"123."、"123.5"、".5" 这几种形式的表达式时,整数、小数点、小数数字都可以省略,但是不要将表达式写成:"\d*\.?\d*",因为如果什么都没有,这个表达式也可以匹配成功。更好的写法是:"\d+\.?\d*|\.\d+"

4.5 能匹配空字符串的子匹配不要循环无限次。如果括号内的子表达式中的每一部分都可以匹配 0 次,而这个括号整体又可以匹配无限次,那么情况可能比上一条所说的更严重,匹配过程中可能死循环。虽然现在有些正则表达式引擎已经通过办法避免了这种情况出现死循环了,比如 .NET 的正则表达式,但是我们仍然应该尽量避免出现这种情况。如果我们在写表达式时遇到了死循环,也可以从这一点入手,查找一下是否是本条所说的原因。

4.6 合理选择贪婪模式与非贪婪模式,参见话题讨论

4.7 或 "|" 的左右两边,对某个字符最好只有一边可以匹配,这样,不会因为 "|" 两边的表达式因为交换位置而有所不同。


- 作者: 清水白菜 2007年05月22日, 星期二 15:26  回复(0) |  引用(0) 加入博采

DynamicOptionList连动菜单  (作者置顶)
    使用前请看一下说明,不会耽误你多少时间,明白以后有助你快速实现这个小功能,实际上非常简单,与你使用的开发语言也没有什么关系:


1. <option selected value="all">==查看所有==</option>
 这个下拉项可以保留或忽略,内容如“==查看所有==”可替换为自己需要的内容,value="all" 属性可以获得一个附加的全过滤显示功能,建议保留:)


2.下拉菜单数据格式,(实际开发可以由后台程序生成一个数据格式字符串,这个数据串格式和你查询的表结构应该是一样的,传到模板上取得这个数据格式串即可,所有下拉菜单数据是一次传到页面上的,并且与你使用的语言开发实现没有什么关系,只要你想办法得到这个字符串格式就行了)如下:

a.第一级连动菜单的下拉选项,格式为 (下拉选项option内容,下拉选项option值;......)

"上海,01;江西,02";

b. 第二级连动菜单的下拉选项,(子下拉选项option过滤值,子下拉选项option内容,子下拉选项option值;......)

"01,徐汇区,001;01,嘉定区,002;01,黄浦区,003;02,南昌市,004;02,九江市,005;02,上饶市,006";

c. 第三级连动菜单的下拉选项,(子下拉选项option过滤值,子下拉选项option内容,子下拉选项option值;......)

"001,徐汇1区,0001;002,嘉定1区,0002;003,黄浦1区,0003;004,南昌1市,0004;005,九江1市,0005;006,上饶1市,0006";
.
.
.
第 N 级连动菜单的下拉选项,(子下拉选项option过滤值,子下拉选项option内容,子下拉选项option值;......)

除了第一级没有子下拉选项option过滤值这一项外,其他子集都有子下拉选项option过滤值


3.实际可实现N级连动菜单,只要由当前菜单驱动它的子菜单即可,类似与责任链模式;

4.实际开发将<head> ...</head> 中的3个方法放至在一个单独的脚本文件里面,并引入它,只要在页面调用方法即可,这样就会发现实现这个功能很简洁,调用的方法也很自然;

5.下文举了4个例子,实际都一样,只是名字和样式不一样而已,名称后缀('_'下划线作为后缀的分隔符)不是必要的;


 

<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script LANGUAGE="javascript">
<!--
//测试用的一组数据

//第1级下拉菜单数据
var opt = "上海,01;江西,02";

//第2级下拉菜单数据
var subopt = "01,徐汇区,001;01,嘉定区,002;01,黄浦区,003;02,南昌市,004;02,九江市,005;02,上饶市,006";

//第3级下拉菜单数据
var subsubopt = "001,徐汇1区,0001;002,嘉定1区,0002;003,黄浦1区,0003;004,南昌1市,0004;005,九江1市,0005;006,上饶1市,0006";

/**
 * get Element By Id or name.
 * 根据一个dom对象的名称返回这个对象,省略了你
 * 直接操作document.getElementById的过程.
 *
 * 例如: $('默认文本框的名称').value
 *       就可以取得它的value
 */
function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

/*
 * 自动填充一个下拉列表,一般用于填充连动菜单的第一项
 *
 * selname :: 当前下拉选项(this)
 *            后缀是为了区分由程序动态生成的如果有多个相同的下拉选项而设
 *            置的一个辅助名称后缀('_'下划线作为后缀的分隔符),如果没有这
 *            个需要可以忽略 “_后缀”,只要设置一个普通的名称即可.
 *
 * seldata :: 数据源,菜单的数据项(子下拉选项名称,子下拉选项值,子下拉选项过滤值)
 * filter  :: 下拉选项的过滤条件
 *
 */
function fillselect(selname,seldata,filters) {
 var sel = $(selname);
 var data = seldata.split(";");
 var filtersdata = filters.split(";");

 var index = "";
 var selkey = "";
 var selvalue = "";

 if(data.length > 0) {

  //过滤条件为'all',显示全部,用于连动菜单
  if(filtersdata[0] == 'all') {
   sel.options[0] = new Option('==查看所有==','all');

   for(i=0; i < data.length; i++) {
    selkey = data[i].split(",")[1];
    selvalue = data[i].split(",")[2];
    sel.options[sel.length] = new Option(selkey,selvalue);
   }
   
   return;
  }

  sel.options[0] = new Option('==查看所有==','all');
  for(i=0;i < data.length; i++) {
   
   //有过滤条件的下拉项(连动菜单数据格式)
   if (data[i].split(",").length == 3) {
    for(j=0; j < filtersdata.length; j++){
     if( (data[i].split(",")[0] == filtersdata[j]) ) {
      selkey = data[i].split(",")[1];
      selvalue = data[i].split(",")[2];
      sel.options[sel.length] = new Option(selkey,selvalue);
     }
    }
   }

   //无过滤条件的下拉项(非连动菜单数据格式)
   if (data[i].split(",").length == 2) {
    selkey = data[i].split(",")[0];
    selvalue = data[i].split(",")[1];
    sel.options[sel.length] = new Option(selkey,selvalue);
   }

  }
  
  if (sel.length == 1) {
   sel.options[0] = new Option('==没有选项==','');
  }else{
   
  }
 }   
}

/*
 * 连动下拉列表的驱动函数
 *
 * selname_src    :: 当前下拉选项(this)
 *
 * subselname_src :: 所要驱动的子下拉选项的名称(名称结构为: 名称_后缀 或 名称)
 *                   后缀是为了区分由程序动态生成的如果有多个相同的下拉选项而设
 *                   置的一个辅助名称后缀('_'下划线作为后缀的分隔符),如果没有这
 *                   个需要可以忽略 “_后缀”,只要设置一个普通的名称即可.
 *
 * subseldata_src :: 数据源,被驱动菜单的数据项.
 *                   数据源格式 : (子下拉选项option过滤值,子下拉选项option内容,子下拉选项option值;......)
 *
 */
function driverselect(selname_src,subselname_src,subseldata_src) {

 var index = "", selkey = "", selvalue = "";

 var selName="", selSuffix="";
 var subselName="", subselSuffix="";
 
 if(selname_src.name.split("_").length==2) {
  selName=selname_src.name.split("_")[0];
  selSuffix="_" + selname_src.name.split("_")[1];
 }else{
  selName=selname_src.name;
 }

 if(subselname_src.split("_").length==2) {
  subselName=subselname_src.split("_")[0];
  subselSuffix="_" + subselname_src.split("_")[1];
 }else{
  subselName=subselname_src;
 }

 var source = $(selName+selSuffix);
 var target = $(subselName+subselSuffix); 
 target.length=1;

 var filters = "";
 for(j=0; j < source.length; j++) {
  if(source[j].selected){
   filters = filters + source[j].value + ';';
  }
 }

 fillselect(target,subseldata_src,filters);
}   

//-->
</script>
</head>
<body>
<form name="myform" method="post">

sample1:

    <select name="sel_1" onChange="driverselect(this,'subsel_1',subopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsel_1" onChange="driverselect(this,'subsubsel_1',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubsel_1">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>


sample2:

    <select name="sel_2" onChange="driverselect(this,'subsel_2',subopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsel_2" onChange="driverselect(this,'subsubsel_2',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubsel_2">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>

 sample3:

    <select name="selM_1" MULTIPLE size="5" onChange="driverselect(this,'subselM_1',subopt)" >
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subselM_1" MULTIPLE size="5" onChange="driverselect(this,'subsubselM_1',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubselM_1" MULTIPLE size="5">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>

sample4:

    <select name="selM_2" MULTIPLE size="5" onChange="driverselect(this,'subselM_2',subopt)">
  <option selected value="">==查看所有==</option>
    </select>
    <select name="subselM_2" MULTIPLE size="5" onChange="driverselect(this,'subsubselM_2',subsubopt)">
  <option selected value="">==查看所有==</option>
    </select>
    <select name="subsubselM_2" MULTIPLE size="5">
  <option selected value="">==查看所有==</option>
    </select>

 <br><br>

</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
//初始化sample1:第一个下拉菜单项
fillselect('sel_1',opt,'');

//初始化sample2:第一个下拉菜单项
fillselect('sel_2',opt,'');

//初始化sample3:第一个下拉菜单项
fillselect('selM_1',opt,'');

//初始化sample4:第一个下拉菜单项
fillselect('selM_2',opt,'');
//-->
</SCRIPT>
</body>
</html>

 点击测试上述代码演示:

<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script LANGUAGE="javascript">
<!--
//测试用的一组数据

//第1级下拉菜单数据
var opt = "上海,01;江西,02";

//第2级下拉菜单数据
var subopt = "01,徐汇区,001;01,嘉定区,002;01,黄浦区,003;02,南昌市,004;02,九江市,005;02,上饶市,006";

//第3级下拉菜单数据
var subsubopt = "001,徐汇1区,0001;002,嘉定1区,0002;003,黄浦1区,0003;004,南昌1市,0004;005,九江1市,0005;006,上饶1市,0006";

/**
 * get Element By Id or name.
 * 根据一个dom对象的名称返回这个对象,省略了你
 * 直接操作document.getElementById的过程.
 *
 * 例如: $('默认文本框的名称').value
 *       就可以取得它的value
 */
function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

/*
 * 自动填充一个下拉列表,一般用于填充连动菜单的第一项
 *
 * selname :: 当前下拉选项(this)
 *            后缀是为了区分由程序动态生成的如果有多个相同的下拉选项而设
 *            置的一个辅助名称后缀('_'下划线作为后缀的分隔符),如果没有这
 *            个需要可以忽略 “_后缀”,只要设置一个普通的名称即可.
 *
 * seldata :: 数据源,菜单的数据项(子下拉选项名称,子下拉选项值,子下拉选项过滤值)
 * filter  :: 下拉选项的过滤条件
 *
 */
function fillselect(selname,seldata,filters) {
 var sel = $(selname);
 var data = seldata.split(";");
 var filtersdata = filters.split(";");

 var index = "";
 var selkey = "";
 var selvalue = "";

 if(data.length > 0) {

  //过滤条件为'all',显示全部,用于连动菜单
  if(filtersdata[0] == 'all') {
   sel.options[0] = new Option('==查看所有==','all');

   for(i=0; i < data.length; i++) {
    selkey = data[i].split(",")[1];
    selvalue = data[i].split(",")[2];
    sel.options[sel.length] = new Option(selkey,selvalue);
   }
  
   return;
  }

  sel.options[0] = new Option('==查看所有==','all');
  for(i=0;i < data.length; i++) {
  
   //有过滤条件的下拉项(连动菜单数据格式)
   if (data[i].split(",").length == 3) {
    for(j=0; j < filtersdata.length; j++){
     if( (data[i].split(",")[0] == filtersdata[j]) ) {
      selkey = data[i].split(",")[1];
      selvalue = data[i].split(",")[2];
      sel.options[sel.length] = new Option(selkey,selvalue);
     }
    }
   }

   //无过滤条件的下拉项(非连动菜单数据格式)
   if (data[i].split(",").length == 2) {
    selkey = data[i].split(",")[0];
    selvalue = data[i].split(",")[1];
    sel.options[sel.length] = new Option(selkey,selvalue);
   }

  }
 
  if (sel.length == 1) {
   sel.options[0] = new Option('==没有选项==','');
  }else{
  
  }
 }   
}

/*
 * 连动下拉列表的驱动函数
 *
 * selname_src    :: 当前下拉选项(this)
 *
 * subselname_src :: 所要驱动的子下拉选项的名称(名称结构为: 名称_后缀 或 名称)
 *                   后缀是为了区分由程序动态生成的如果有多个相同的下拉选项而设
 *                   置的一个辅助名称后缀('_'下划线作为后缀的分隔符),如果没有这
 *                   个需要可以忽略 “_后缀”,只要设置一个普通的名称即可.
 *
 * subseldata_src :: 数据源,被驱动菜单的数据项.
 *                   数据源格式 : (子下拉选项option过滤值,子下拉选项option内容,子下拉选项option值;......)
 *
 */
function driverselect(selname_src,subselname_src,subseldata_src) {

 var index = "", selkey = "", selvalue = "";

 var selName="", selSuffix="";
 var subselName="", subselSuffix="";
 
 if(selname_src.name.split("_").length==2) {
  selName=selname_src.name.split("_")[0];
  selSuffix="_" + selname_src.name.split("_")[1];
 }else{
  selName=selname_src.name;
 }

 if(subselname_src.split("_").length==2) {
  subselName=subselname_src.split("_")[0];
  subselSuffix="_" + subselname_src.split("_")[1];
 }else{
  subselName=subselname_src;
 }

 var source = $(selName+selSuffix);
 var target = $(subselName+subselSuffix);
 target.length=1;

 var filters = "";
 for(j=0; j < source.length; j++) {
  if(source[j].selected){
   filters = filters + source[j].value + ';';
  }
 }

 fillselect(target,subseldata_src,filters);
}   

//-->
</script>
</head>
<body>
<form name="myform" method="post">

sample1:

    <select name="sel_1" onChange="driverselect(this,'subsel_1',subopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsel_1" onChange="driverselect(this,'subsubsel_1',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubsel_1">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>


sample2:

    <select name="sel_2" onChange="driverselect(this,'subsel_2',subopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsel_2" onChange="driverselect(this,'subsubsel_2',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubsel_2">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>

 sample3:

    <select name="selM_1" MULTIPLE size="5" onChange="driverselect(this,'subselM_1',subopt)" >
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subselM_1" MULTIPLE size="5" onChange="driverselect(this,'subsubselM_1',subsubopt)">
  <option selected value="all">==查看所有==</option>
    </select>
    <select name="subsubselM_1" MULTIPLE size="5">
  <option selected value="all">==查看所有==</option>
    </select>

 <br><br>


sample4:

    <select name="selM_2" MULTIPLE size="5" onChange="driverselect(this,'subselM_2',subopt)">
  <option selected value="">==查看所有==</option>
    </select>
    <select name="subselM_2" MULTIPLE size="5" onChange="driverselect(this,'subsubselM_2',subsubopt)">
  <option selected value="">==查看所有==</option>
    </select>
    <select name="subsubselM_2" MULTIPLE size="5">
  <option selected value="">==查看所有==</option>
    </select>

 <br><br>

</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
//初始化sample1:第一个下拉菜单项
fillselect('sel_1',opt,'');

//初始化sample2:第一个下拉菜单项
fillselect('sel_2',opt,'');

//初始化sample3:第一个下拉菜单项
fillselect('selM_1',opt,'');

//初始化sample4:第一个下拉菜单项
fillselect('selM_2',opt,'');
//-->
</SCRIPT>
</body>
</html>


- 作者: 清水白菜 2007年05月9日, 星期三 12:14  回复(0) |  引用(0) 加入博采

健康身体,运动之道[健身大全]  (作者置顶)
锻炼图解...新手获益就是大斌最大的心愿

三角肌前部

前平举
起始姿势 两腿直立,挺胸收腹。两手正握哑玲或杠铃,两臂下垂于腿前。 
动作过程 直臂持铃向上举起,至稍高于肩。静止一秒钟,再直臂徐徐放下,还原至腿前。如用哑铃,可左右手各一次,连续交替做。 
呼吸方法 上举时吸气,下落时呼气。 
注意要点 上举和下落时全身保持直立,两臂保持直伸,意念集中在三角肌。 
三角肌中部

侧平举
起始姿势 两脚自然开立,两手握哑铃,下垂于身体两侧。 
动作过程 收缩三角肌,直臂向侧上方举起,直到略高于肩,静止一秒钟,再让两臂徐徐放下到下垂位置。 
呼吸方法 上举时吸气,静止时呼气。下降时吸气,完全落下时呼气。 
注意要点 上举和下落时,全身保持直立,不要摇摆弯曲,臂部保持直伸。 
单臂侧平拉

单臂侧平拉
起始姿势 全身直立,一脚踩套住拉力器的一个握柄或胶皮条的一端。另一手插按在腰间。 
动作过程 收缩三角肌,一手将拉力器或胶皮条向侧上方拉到与肩齐高。另一手用力插按腰间以保持平衡。上拉到最高点后,静止一秒钟,然后,在三角肌继续用力控制下,让拉簧或胶皮条徐徐松缩到开始位置。重复练一肩已无力上拉后,换练另一肩。 
呼吸方法 上拉时吸气,到达顶点后呼气。下落时吸气,落到底点后呼气。 
注意要点 上拉时,身体不要摇摆借劲。这一动作也可用哑铃,侧卧来做。  
三角肌后部

俯身侧平举
起始姿势 两足开立,向前屈体90度,两手握哑铃,两臂直垂肩下。 
动作过程 收缩三角肌后部,直臂从两侧平举起哑铃,直到与地面平行。静止一秒钟,再让两臂徐徐放下。 
呼吸方法 上举时吸气,下落时呼气。 
注意要点 上举和下放哑铃时,全身保持稳定,不要摇摆。意念集中在三角肌后部。上举前,要彻底放松,到达最高点时,要彻底收缩。这一动作也可俯卧在长条凳上做。

直立推举
起始姿势 把杠铃从地面上拉到胸上,全身直立。 
动作过程 两臂向上直推至完全伸直,静止一秒钟,让杠铃慢慢下落到胸上。 
呼吸方法 上举时吸气,下落时呼气。 
注意要点 上举和下放杠铃时,身体不要摆动。该动作对上臂三头肌也有较大锻炼作用。如将杠铃下落到颈后肩上,则对三角肌后部有更大的锻炼作用,称为颈后推举。胸前和颈后的推举,也可坐在凳上做。还可用哑铃,左右两臂同时作交替的上推和下落,如此做,则可在上推和下落时吸气,静止时呼气。
胸大肌

平卧举
起始姿势 仰卧长凳 将杠铃放在乳头上方 
动作过程 将杠铃垂直上举至两臂完全伸直,胸肌彻底收缩,静止一秒钟,慢慢下落。 
呼吸方法 上举时吸气,下落时呼气。 
注意要点 上举时背部、臀部要平贴凳面,两脚用劲下踏 

上斜卧举
起始姿势 头朝上斜卧长凳30-45度 , 两手正握杠铃置于胸部上方 
动作过程 把杠铃垂直上举至两臂完全伸直,静止一秒钟,慢慢下落徐徐至原位 
呼吸方法 上举时吸气,静止时呼气。徐徐下落时吸气,落到原位时呼气。 

下斜卧举
起始姿势 头朝下斜卧长凳, 两手正握杠铃置于胸部下方 
动作过程 把杠铃垂直上举至两臂完全伸直,静止一秒钟,慢慢下落徐徐至原位 
呼吸方法 上举时吸气,静止时呼气。徐徐下落时吸气,落到原位时呼气。 

仰卧飞鸟
起始姿势 仰卧长凳上,两手拳心相对,持哑铃;两臂向上直伸与地面垂直,两脚平踏地面。 
动作过程 两手向两侧分开下落,两肘微屈,直到不能更低时止。静止一秒钟,让胸大肌完全伸展,然后将两臂从两侧向上,回合到开始位置。 
呼吸方法 两臂拉开时吸气,回复时呼气。 
注意要点 两手不要紧握。分臂时,背部肌肉要收紧。意念集中在胸大肌的收缩和伸展上。 

卧式两臂上拉
起始姿势 仰卧长凳上 , 两手正握哑铃或杠铃,两臂直伸,与地面平行。两脚平踏在地面或长凳上。 
动作过程 两臂保持平伸,将把哑铃或杠铃向上向后拉,并下落到可能的最低点。静止一秒钟,让胸大肌尽量拉伸。然后,收缩胸大肌,把两臂拉向上,拉向前,直至下落到腿侧开始位置。 
呼吸方法 向上向后拉时吸气,向上向前回复时呼气。 
注意要点 后拉时,让两臂充分向后直伸,前拉时,让两臂充分向前直伸。该动作也可两手并握一较重的哑铃来做,因两手握距较狭,重量集中在杠中央,对发展胸大肌靠人体中线的边沿部分有较大作用。
股四头肌

后蹲
该动作不仅锻炼股四头肌和臀大肌,还可使下半身得到全面锻炼。  
起始姿势 站在深蹲架前,屈膝,两手握住深蹲架上的杠铃并担负在颈后肩上。向前走两步,两脚开立,略宽于肩,足趾稍向外撇,身体伸直 
动作过程 屈膝下蹲到大腿上面和地面平行或稍低,静止一秒钟,大腿和臀部用力使两脚蹬地,使身体回复到直立。按规定次数和组数重复再做。完成后,退回几步,把杠铃放回深蹲架上。 
呼吸方法 下蹲时呼气,起立时吸气。 
注意要点 在做整个动作的过程中,背部要平直,上体勿前倾,臀部不要后突,后腰要下塌,动作要稳定。腿部快伸直时,用力挺直膝关节。 

前蹲
起始姿势 站在深蹲架前,屈膝,两手握住深蹲架上的杠铃托在胸前肩上。向前走两步,两脚开立,略宽于肩,足趾稍向外撇,身体伸直 
动作过程 屈膝下蹲到大腿上面和地面平行或稍低,静止一秒钟,大腿和臀部用力使两脚蹬地,使身体回复到直立。按规定次数和组数重复再做。完成后,退回几步,把杠铃放回深蹲架上。 
呼吸方法 下蹲时呼气,起立时吸气。 
注意要点 在做整个动作的过程中,背部要平直,上体勿前倾,臀部不要后突,后腰要下塌,动作要稳定。腿部快伸直时,用力挺直膝关节。 

腿举
起始姿势 仰卧在“腿举架”的底板上,蜷缩双腿让整个脚底顶住加重板的底面。 
动作过程 两腿用力向上蹬板,到两腿完全伸直,同时尽力收缩股四头肌。静止一秒钟,屈膝,让加重板慢慢下降到先卡定的高度。重复再做。 
呼吸方法 用力蹬板时吸气,回降时呼气。 
注意要点 仰卧时,臀部正对加重板的中心下方。蹬板时,整个脚底平贴住板底。 
股二头肌 

坐式腿屈伸
起始姿势 坐在专制长凳上,在滚轴的另一边加上所要重量的杠铃片,两脚勾住滚轴,小腿与大腿成90度角。 
动作过程 两腿用力收缩股四头肌,伸直膝关节,使小腿向上挺直。静止一秒钟,垂下小腿,重复再做。 
呼吸方法 用力蹬板时吸气,回降时呼气。 

立式腿弯举
起始姿势 站在一高木块或矮凳上,一脚系一哑铃,自然直悬在木块外,另一腿支撑体重,一手或两手扶墙或木条。 
动作过程 屈膝,把小腿用力尽量向后弯起,静止一秒钟,同时尽力收缩二头肌。自然垂下小腿到原来位置,重复再做。 
呼吸方法 弯起小腿时吸气,下垂时呼气。 
注意要点 弯起小腿时,不要让大腿前后摆动。 
小腿肌肉群

俯卧腿弯举
起始姿势 俯卧在专用长凳上,两脚踝伸钩在滚轴下面,滚轴另一面加上所要重量的杠铃片。 
动作过程 屈膝,把小腿向后弯起,到最高点时尽力收缩二头肌。静止一秒钟,伸直下小腿到原来位置,重复再做。 
呼吸方法 弯起小腿时吸气,放下时呼气。 
注意要点 弯起小腿时,大腿平贴凳面。如没有专用的腿弯举凳,可俯卧在普通的长凳上,脚系哑铃、杠铃片做。 

站立提踵
起始姿势 将杠铃放在颈后肩上,两脚开立,脚尖稍向里扣或外撇,脚掌站在垫木上,脚跟露在垫木外。 
动作过程 收缩小腿肌肉群,使脚跟尽量提高,使腓肠肌彻底收紧。静止一秒钟,放下脚跟,还原。重复再做。 
呼吸方法 提起脚跟时吸气,放下时呼气。 
注意要点 脚跟上提和下降时要注意保持重心稳定,身体踮高时,前额要领先上提。下降时,要让脚跟低于垫木面。
腹直肌 

仰卧起腿
起始姿势 仰卧平垫上或头朝上仰卧斜板上。两手握住头后方的固定物件,全身伸直。 
动作过程 收缩腹肌,将保持伸直的两腿向上弯起,直到可能的最大程度。保持一秒钟,再让两腿徐徐回落。 
呼吸方法 向上弯起两腿时吸气,回落时呼气。 
注意要点 下落两腿时,仍要控制腹肌,勿使下落过快。 

仰卧抬腿卷缩上体
起始姿势 平卧床上或地上。两膝弯屈,抬起小腿,勿使下降,两手抱头。 
动作过程 在保持小腿不下放的姿势中,尽力把上体向前卷缩,身体实际上不会上抬很高。 
呼吸方法 向前卷缩时吸气,回落时呼气。 
注意要点 向前卷缩时,腰要下沉贴床或地面,腹肌尽量收缩。  

悬杠屈膝缩腿
起始姿势 两手正握单杠,全身直垂杠下。 
动作过程 屈膝,把小腿尽力向上缩起,到最高点时,彻底收缩腹直肌一秒钟。然后徐徐下垂小腿,直到完全伸直。 
呼吸方法 缩起小腿时吸气,降落时呼气。 
注意要点 缩起小腿时要尽力把两膝向上提升。 

坐式缩腿
起始姿势 坐在凳边,两手向后撑在凳上。两腿向前直伸。 
动作过程 屈膝缩起小腿到可能的最高点。彻底收缩腹直肌一秒钟,然后徐徐降落小腿,直到完全伸直。 
呼吸方法 缩起小腿时吸气,降落时呼气。 
注意要点 本动作较简易,其作用大小全在膝部上提的高低和动作的快慢上。愈高愈慢愈大,反之愈小。
上臂三头肌

臂屈伸
起始姿势 两手正握或反握杠铃或两手合握一个哑铃。将其高举过顶后,屈肘,让前臂向后下垂。全身直立或坐在凳上。 
动作过程 两上臂贴近两耳,保持竖直,不摇动。收缩三头肌,逐渐伸展肘关节,把前臂向上挺伸,直到臂部完全伸直,三头肌彻底收紧。静止一秒钟,再屈肘,让前臂徐徐下垂到开始位置,使三头肌尽量伸展。 
呼吸方法 挺伸前臂时吸气,屈降时呼气。 
注意要点 挺伸前臂时切勿摆动上臂。  

俯身臂屈伸
起始姿势 向前屈体,单手握哑铃,另一手撑开或一手扶膝后腿上,让握铃的上臂贴靠身侧,与上体平行。屈肘,让前臂自然下垂。 
动作过程 上体和上臂保持不动,收缩三头肌,把前臂向后上方挺伸,直到臂部完全伸直,同时彻底收缩三头肌。静止一秒钟,再屈肘,让前臂徐徐下垂到开始位置。 
呼吸方法 挺伸前臂时吸气,下垂时呼气。 
注意要点 挺伸前臂时尽可能勿使上臂上下摆动,臂部完全挺直后,还要把手腕往上抬,使三头肌收缩更彻底。  

卧式臂屈伸
起始姿势 平卧长凳上,两手反握或正握杠铃,向上举起,两臂和地面垂直后,屈肘下垂前臂。 
动作过程 保持上臂不摆动,收缩三头肌,把前臂向上挺伸,直到臂部完全伸直,。静止一秒钟,彻底收缩三头肌,然后屈肘有控制地让前臂徐徐下垂到开始位置,充分伸展三头肌。 
呼吸方法 挺伸前臂时吸气,下垂时呼气。 
注意要点 挺伸和下垂前臂时,上臂要保持原位不摆动。  

直臂后抬
起始姿势 身体直立,两手反握或正握杠铃,置于身后。 
动作过程 保持两臂伸直,将杠铃尽量向后上方抬起。最后,向上屈转手腕,并尽力收缩三头肌,静止一秒钟,下降杠铃到原位。放松三头肌。 
呼吸方法 臂部后抬时吸气,回降时呼气。 
注意要点 抬臂时,身体不可晃动,抬到可能的最高点屈转手腕,才能使三头肌彻底收缩。 

双臂胸前屈伸
起始姿势 两手在胸前握一根连接拉力条的弯把,握距与肩同宽或稍窄或合紧。上臂贴靠两肋。屈肘,弯起前臂。 
动作过程 保持上臂不动,收缩三头肌和前臂的肌肉,将弯把用力下压到臂部完全伸直。静止一秒钟,尽力收缩三头肌,屈肘,让弯把徐徐回到原位。 
呼吸方法 弯把下压时吸气,缩回时呼气。 
注意要点 弯把下压时,务必低到两臂完全伸直。上臂要固定不动。虽然前臂也需用力,但意念要注意三头肌的伸缩。  
上臂二头肌

两臂弯举
起始姿势 全身直立,两手仰握杠铃,两臂下垂。 
动作过程 上臂尽量保持不摆动,屈肘,弯起前臂到可能的最高点,同时收缩二头肌,静止一秒钟。松展肘关节,让前臂徐徐下落到两臂完全伸直。 
呼吸方法 弯起前臂时吸气,回落时呼气。 
注意要点 要依靠二头肌的力量使前臂向上弯起,在前臂弯起到最高点时,彻底收缩二头肌一秒钟,而不是立即放松它。不要在弯起前臂时让两肘随之向前上方摆动来使前臂上弯得更高。 

单臂蹲坐弯举
起始姿势 蹲在地上或坐在凳上,一手握哑铃,让上臂贴在大腿内侧,前臂向下直垂。另一只手扶压在另一大腿上。 
动作过程 收缩握铃一臂的二头肌将前臂向上弯起,到可能的最高点时,彻底收缩二头肌一秒钟,然后伸展肘关节,让哑铃徐徐下落到开始位置。练完一侧,换练另一侧。 
呼吸方法 弯起前臂时吸气,下垂时呼气。 
注意要点 让上臂贴靠大腿是为了确保不在弯起前臂时移动肘部。 

两臂斜板弯举
起始姿势 立在斜板后,两手握杠铃,手心向上,将整个臂部或是上臂平贴在斜板上。 
动作过程 收缩二头肌,将前臂向上弯起,直到可能的最高点时,彻底收缩二头肌一秒钟,然后慢慢松展肘关节,让杠铃徐徐回落到板上。 
呼吸方法 弯起前臂时吸气,落下时呼气。 
注意要点 平贴在斜板上的臂,先要尽量向下伸直。上弯前臂时,肩部丝毫不可上缩。 


前臂 

腕弯举
起始姿势 两手反握杠铃,蹲坐下来。将前臂贴放在大腿上,把手腕向前伸出,垂于膝盖前,两手也可正握杠。反握主练前臂内侧肌肉。正握主练前臂外侧肌肉。也可把上臂贴靠在平板或斜板上做或用哑铃左右轮流做。 
动作过程 前臂平贴大腿,只把手腕尽力向上、向内屈转(收缩屈指肌),直到不能再屈转时,静止一秒钟。放松前臂肌肉,让手腕向前回落。 
呼吸方法 屈转手腕时吸气,回落时呼气。 
注意要点 屈转到最后时,一定要尽力收缩前臂肌肉(屈指肌)一秒钟,再逐渐放松。
上背部

立式耸肩
起始姿势 身体直立,两手用正(俯)握法握杠铃或哑铃,握距稍宽于肩。 
动作过程 先让肩部尽量下倾,两臂完全不使劲,然后耸起两肩(主要是收缩斜方肌),静止一秒钟,松下肩,重复再做。 
呼吸方法 耸起肩部时吸气,松下时呼气。 
注意要点 耸起肩部把杠铃稍稍上提要完全靠收缩斜方肌所产生的力量,两肘不能丝毫弯曲。 

直立划船
起始姿势 两脚自然开立,两手握杠,用上握法握距比肩狭(可窄到两拳在杠中央相接)。 
动作过程 把杠铃徐徐向上拉起,直到横杠几乎触及颏部。静止一秒钟,让杠铃徐徐下垂到两臂完全伸直,重复再做。 
呼吸方法 杠铃上拉时吸气,下垂时呼气。 
注意要点 上拉时要让横杠尽量贴近身体。如握把较宽,杠铃上提时让两肘尖向上。上拉时身体不要摆动。下垂杠铃要徐徐而行,最后要让杠铃尽量下垂到可能的最低点。 
中背部

引体向上
起始姿势 两手用宽握距正握(掌心向前)单杠,两脚离地,两臂身体自然下垂伸直。 
动作过程 用背阔肌的收缩力量将身体往上拉起,直到单杠触及或接近胸部。静止一秒钟,使背阔肌彻底收缩。然后逐渐放松背阔肌,让身体徐徐下降,直到回复完全下垂,重复再做。 
呼吸方法 将身体往上拉时吸气,下垂时呼气。 
注意要点 上拉时意念集中在背阔肌,把身体尽可能的拉高,上拉时不要让身体摆动。下垂时脚不能触及地面。可在腰上钩挂杠铃片来加重。  

坐式下拉吊棍
起始姿势 坐在凳上,两手用宽握距向上伸直,正握(掌心向前)吊棍。 
动作过程 收缩背阔肌,将吊棍尽力往下拉,直到触及颈后肩背部或是触及前胸。然后慢慢放松背阔肌,让吊棍缩回到两臂伸直拉住的高度。 
呼吸方法 将吊棍下拉时吸气,松回时呼气。 
注意要点 应将意念集中在背阔肌收缩和放松的控制上。若坐着的高度不合适,可立着做或跪着做。  


俯身划船
该动作是锻炼背阔肌的基本动作之一,可用杠铃、哑铃等来做。用杠铃时,握距宽时,并上拉到触及腹部时,对背阔肌下端有较大锻炼作用。握距窄,并直接上拉到触及胸部时,对背阔肌上部影响较大。若用哑铃,可左右手交替做或用单个先练一边,再练另一边。  
起始姿势 屈膝,上体前倾,两臂直垂握杠,应使杠铃稍离地面。头不要低垂。 
动作过程 收缩背阔肌,将上臂上拉,把杠铃尽量拉高,静止一秒钟,让杠铃徐徐下降到两臂完全伸直下垂。 
呼吸方法 上拉杠铃时吸气,放下时呼气。 
注意要点 上拉时要想着让主要力量来自背阔肌的收缩,而不是臀部。上拉时,腰要收紧,上体尽量不摇动,腿部用力,臀部后移,以保持平衡。如做单臂划船,另一手可撑扶在膝上或凳上。 
下背部

直腿硬拉
起始姿势 两脚开立,比肩稍狭。向前屈体,不要屈膝。两手用正、反握握杠,握距稍宽于肩。勿低头。 
动作过程 收缩下背部肌肉,把上体向上向后挺起,两肩尽量后移。最后,尽力收缩骶棘肌,静止一秒钟,再慢慢屈体向前,直到杠铃片几乎触及地面。如欲加大后背部的屈伸幅度来加大锻炼效果,两脚放在垫木上,杠铃放在地上。 
呼吸方法 上拉时吸气,放下时呼气。 
注意要点 两腿始终直立,膝部勿弯曲。意念要始终在后背部。动作平稳,用大重量,但又切勿过重。切勿突然用大重量。也可屈腿做这个动作,称为“屈腿硬拉”,对下背部的锻炼作用稍小,但有助于锻炼股四头肌。 

负重躬身
起始姿势 颈后肩负杠铃,两手用宽握距握杠,全身直立。 
动作过程 慢慢向前屈体躬身,直到上体与地面平行,静止一秒钟,身体向上挺起,直到回复全身直立。 
呼吸方法 向前屈体时吸气,挺起时呼气。 
注意要点 屈伸上体时,应始终保持挺胸收腹紧腰和两脚伸直。两手紧握横杠,勿使在颈椎上滑动。挺起时有意识的彻底收缩骶脊肌。  

超度挺身
起始姿势 俯伏在长凳上,让上身前滑,直到小腹贴在凳边。向前屈体,让上体直向下垂。让一同伴压住或坐在小腿上。两手交叉放在胸前。若要增大抗力,还可抱一杠铃片在胸前。 
动作过程 上体尽量向上挺,到最高点时,静止一秒钟。然后慢慢回复。 
呼吸方法 上体挺起时吸气,前屈时呼气。 
注意要点 向上挺伸时应尽力收缩骶脊肌,动作不要过快。

健美知识大全


一、健美运动的概念

    健美运动是一项通过徒手和各种器械,运用专门的动作方式和方法进行锻炼,以发达肌肉、增长体力,改善形体和陶冶情操为目的的运动项目。它是举重运动的一个分支,也是一个独立的竞赛项目.

    健美运动可以采用各种徒手练习,如各种徒手健美操、韵律操、形体操以及各种自抗力动作。也可采用各色各样轻重不同的运动器械来进行练习,如杠铃、哑铃、壶铃等举重器械,单杠、双杠等体操器械,以及弹簧拉力器、滑轮拉力器、橡筋带和各种特制的综合力量练习器等。

    健美运动的动作方式也是多种多样,既有成套的各种徒手健美体操,也有球、棒等轻器械体操,这些主要用于女子健美训练,借以减肥和改善体形体态,提高韵律感。更有许多能发达身体各部位肌肉的举重练习动作和其它动作,这些动作主要用于男女竞技健美训练。

    为了达到健美的目的,这就需要有专门的训练方法。例如。采用举重等器械做各种动作时,在器械的轻重,动作的做法、次数、组数、速度等方面,就都有特殊的要求和安排。

    健美运动作为一个运动项目,除了具有一般体育活动所共有的能锻炼身体、增进健康、增强体质的作用外,还特别能发达全身各部位的肌肉,增长体力,改善体形体态,以及陶冶美好的情操。它不仅强调"健",而且强调"美",把体育和美育融为一体。

    健美运动是举重运动的一个分支。在长期的发展过程中,广义的举重运动已经一分为三,发展成为三个相对独立的运动项目。即竞技举重,又称奥林匹克举重,通称举重;健美运动,又称健身运动;力量举重。其中健美运动也是一个独立的竞赛项目,它有自己的竞赛动作, 世界锦标赛和国际组织。

1:竞技举重

    a:竞赛项目:抓举、挺举
    b:国际举重联合会(IWF),1920年成立。

2:健美运动

    a:竞赛项目:规定动作、自选动作
    b:国际健身联合会(IFBB)1949年成立。

3:力量举重

    a:竞赛项目:后深蹲、卧推、硬拉。
    b:国示力量举重联合会(IPF)1972年成立。

    健美运动不仅包括以比赛为目的的竞技健美,也包括以减肥或改善体形体态为目的的群众性健美操活动.

二、人体健美的标准 

    从古至今人们都执著地追求人体美,但是,由于人们所处的时代不同,文化程度、社会经历、职业、性别、年龄、民族等的差异,对什么是人体美却都有着各不相同的看法。

    我国体育美学研究人员胡小明根据中国的实际情况提出了如下人体美的标准:“骨骼发育正常,关节不显粗大突出;肌肉均匀发达,皮下脂肪适当;五官端正,与头部配合协调;双肩对称,三角肌宽大且圆;脊柱正视垂直,侧看弯度正常;胸廓隆起,正背面略呈V形,女性胸廓丰满而有明显曲线;腰细而结实呈圆柱形;腹部扁平,男子有腹肌垒块隐现;臀部圆满适度;腿修长,大腿线条柔和,小腿腓部稍突出,足弓高。”

    人体美是健、力、美三者的结合与统一,它包含了生长发育健康而又完善的机体,发达有力的肌肉,优美的人体外形和健康向上的精神气质。

男性健美的标准

1.肌肉发达,体魄健壮

    肌肉是人体力量的源泉,同时也是力的象征,因此,健美的体型、健壮的体魄是和发达的肌肉密切相关的。在艺术家、人类学家和体育家的眼里,发达的肌肉和健壮的体魄是人体美的重要因素。

    有了发达的颈肌能使人颈部挺直,强壮有力;发达的胸肌(胸大肌、胸小肌)能使人的胸部变得坚实而挺拔:

    发达的肱二头肌、肱三头肌及前臂肌群,可使手臂线条、鲜明,粗壮有力;

    覆盖在肩部的三角肌可使肩部增宽,加上发达的背阔肌,就会使躯干呈美丽的V形;
        
    有力的骶棘肌能固定脊柱,使上体挺直,不致弓腰驼背;

    发达的腹肌能增强腹压,保护内脏,有利于缩小腰围,增强美感;

    发达的臀部肌肉和有力的下肢肌肉,能固定下肢,支持全身,给人以坚定有力之感。

    总之,发达而有弹性的肌肉是力量的源泉,也是健美的象征。

2.体型匀称,线条鲜明

    体型主要反映人体的外部形象,无疑是构成人体健美的重要因素之一。

    从研究人体美的角度来看,以脂肪所占的比例,肌肉的发达程度,并参照肩宽和臀围的比例,作为划分体型的条件比较合适,这样可将体型分成胖型、肌型(或运动型)和瘦型三类。

(l)胖型:其特点是上(肩宽)下(臀围)一般粗,躯干象个圆水桶,腰围很大。腹壁的脂肪很厚,在腰两侧下垂,腹部松软,肚脐很深。胸部的脂肪多而下坠,有些女性化。一般都短粗颈、双下巴。体重往往超过标志体重(身高-100)约30-50‰

(2)瘦型;其特点和胖型相反,腰围很小,一躯干上小下大,肩窄,胸乎。四肢细长,肌肉不丰满,线条不明显。颈部细长,无双下巴。体重小于标准体重25一 35%。

(3) 肌型(运动型):其特点是肩宽、臀小,背阔肌大,上体呈倒三角形。腰围较细,腹部肌肉的显。四肢匀称,肌肉发达。颈部强壮有力,无双下巴。体重少于或超过标准体重5%左右。

    经常从事各项体育活动的人,特别是运动员,多为肌型(运动型)。他们身材匀称,肌肉发达,线条鲜明。

    知道了体型分类,就可通过健美锻炼来改善自己的体型,身体肥胖的通过锻炼来减肥,身体瘦弱的也可以通过健美锻炼来增加体重,力求使体格强健而匀称,肌肉发达而柔和。

3.精神饱满,坚韧不拔.

    精神饱满其外在的表现是皮肤健美、姿态端正、动作潇洒,其内在的表现则是富有朝气、勇敢顽强、坚韧不拔;

(1)皮肤健美。这是人体美的重要表征。苏联著名诗人马雅科夫斯基称颂结实的肌肉和古铜色的皮肤是世界上最美丽的衣裳。的确,皮肤是健康状况的镜子,红光满面气色好的人才有精神;相反,脸色发灰精神疲惫的人,往往是身体衰弱多愁善感的病人。红润光泽的肌肤和经常锻炼、适当的营养、正常的生活制度以及乐观的情绪等因素有关。我们应注意经常锻炼身体,保护好皮肤。

(2)姿态端正,动作潇洒。中华民族有着悠久的文明历史,历来重视人的一言一行、一举一动。

    优美的坐姿应该是抬头、挺胸、直腰、收腹。切忌含胸弓背,因为这是造成脊柱弯曲、腰背疼痛的病因,而这样的坐姿也必然会使人显得精神萎靡不振。

    优美的站姿应该"三挺一睁",即挺颈、挺胸、挺腿,两眼圆睁。要目视前方,头颈、躯干和脚在一条垂线上,两臂自然下垂。切忌弓腰挺腹,过分偏移重心至一腿的站姿。长期这样会造成脊柱变形、一肩低垂等毛病。

    优美的走姿不是一摇三晃,也不是八字横行,而应该保持身体在直、挺胸宜腰、微收小腹的姿态,膝和足尖始终正对前方行进,两臂自然摆动,步伐稳健而均匀。

    总之,优美的姿态和潇洒的动作。既符合人体解剖学和生理学的规律,又能给人以健美的印象。

(3)勇敢坚定,坚韧不拔:中华民族历来重视人的精神气质,在赞美英雄的形象和力量的同时,总要更突出地称颂英雄的宏伟气魄。人是一个有机的统一的整体,同样,人体美也同外部表现的形体美和内在体现出的精神气质美的和谐统一,两者有机结合才能称得上真正的健美。因此,必须具有勇敢无畏的精神,坚韧不拔的顽强意志。刚毅果断的性格和良好的品德修养。这种美发自心灵深处,却又能通过人举一动、一言一行而在外部表现出来,并使得别人能够境受得到。这就要求在进行健美锻炼的同时,必须注意加强思想作风、意志品质、精神气质的锻炼和修养。

    总之,男性应该具有发达的肌肉、健壮的体魄、匀称的体型、魁梧的身材、端正的姿态、潇洒的风度,以及发自心灵深处的勇敢无畏、刚毅果断、坚韧顽强的精神气质的阳刚之美。

三、健美运动的作用 

    长期进行健美锻炼,能够发达肌肉、增长力量;增进健康、增强体质;改善体形体态、矫正畸形;调节心理活动,陶冶美好情操;提高神经系统机能,培养顽意志品质。

(一)发达肌肉,增长力量

    健美运动的一个突出作用是可以有效地发达全身肌肉,增长力量。在人体中,由肌肉、骨骼、关节和韧带等共同组成了运动器官,使有机体得以进行各种各样复杂精细的运动,而一切运动的原动力就是那些大大小小的肌肉。由于健美比赛中评分的主要标准之一是肌肉的发达程度,所以,健美训练中要经常采用各种各样的杠铃、哑铃等负重动作,对全身各部位肌肉进行锻炼,特别是每次练习几乎都是极限练习,因此能够使肌肉得到强烈的刺激,从而使肌纤维增粗,肌肉中的毛细血管网增多,肌肉的生理横断面增大,肌肉变得丰满结实而发达,也就是通常所说的肌肉块头增大了。此外由于中枢神经系统调节机能的改善,特别是神经过程的强度和集中能力的提高;在力量训练的影响下,肌细胞内的肌动蛋白和肌球蛋白等收缩物质含量的增加;脂肪的减少,从而使肌肉的粘滞性减小。所有这些变化的结果,导致了肌肉力量的很大增长。特别是某些局部肌肉群的力量,能达到相当高的水平。例如,某些最轻级别健美运动员的卧推成绩竟能达到100千克以上,个别健美运动员甚至能用90千克伪杠铃做弯举和颈后臂屈伸动作,由此可见其惊人的臂力。

(二)增进健康,增强体质

    经常从事健美锻炼,能对心血管系统、呼吸系统和消化系统等各内脏器官的功能产生良好的影响。

    健美锻炼可使心肌增强。心脏容量增大,血管弹性增强,从而提高心脏的收缩力和血管的舒张能力,使心搏有力,心输出量增加。心跳次数也可减少到约 60次/分钟,这样心脏休息的时间就增多了,出现了节省化的现象。由于心脏的工作能力和储备能力都提高了,这就能承受更大的负担最。健美锻炼还能使血液中的红血球、白血球和血红蛋自增加,从而提高身体的营养水平、代谢能力和对疾病的抵抗能力。

    健美锻炼对呼吸系统的机能也有良好的影响,它能提高呼吸深度。增加每次呼吸时的气体交换量,这既有利于呼吸肌的休息,又可提高呼吸系统的功能储备,从而保证在激烈运动时满足气体交换的需要,提高机能水平。健美锻炼还能提高消化系统的机能,因为肌肉活动时要消耗大量的营养物质(尤其是能源物质〕.这就需要及时的补充,同时,肌肉的活动可促使胃肠的蠕动增强,消化液分泌增多,使消化和吸收能力得到提高,食欲增加。综上可见,健美运动能有效地增进人体的健康水平,增强体质。

(三)改善体形体态。

  矫正畸形体形主要是指全身各部位的比例是否匀称、协调、平衡和谐,以及主要肌肉群是否具有优美的线条。体态主要是指整个身体及各主要部位的姿态是否端正优美。我国自古以来就很重视体态,强调一个人要站有站相,坐有坐相,俗话说“站如松、生如钟”。如果长时间不注意体态端正,就可能影响某些骨骼的正常生长和发育,如脊柱的侧屈以及含胸驼背等,影响体态美。健美运动的各种动作能给予身体某些部位的生长发育以巨大的影响,促使骨骼的生长和肌肉的发展。科学的训练还可减少肌肉中的脂肪含量。达到消脂减肥的目的。这些变化都能够有效地改善人的体形体态。如三角肌发达了,肩部就显得宽阔;背阔肌增大了。能使身体是美丽的倒三角形。腹肌发达了,就会使腹部扁平、坚实,使男子变得体格魁梧、肌肉发达、英姿勃勃、风度翩翩;女子变得体态丰满、线条优美、明朗多姿、秀丽动人。

    正因为健美运动的各种动作能给子身体某些相应的部位以巨大的影响,所以,当一个人的体态已经出现某些缺陷的时候,就可以针对性地选择某些适当的动作来进行锻炼以达到矫正畸形的作用。如四肢不成比例者,可以采用先练差的一侧的办法使之发达起来,以达到匀称协调;含胸驼背者。可多练些卧推举和扩胸动作,经过半年左右的锻炼,胸廓自然就会挺拔,肌肉也会发达充实起来。由于健美运动的这一作用,某些动作已被进一步用于医疗体育方面,以期恢复肢体的某些功能。
        
(四)调节心理活动,陶冶美好情操

    人的心理活动,其本质乃是大脑对外界客观事物的反映。现代生活的紧张节奏,会使人产生紧迫感、压抑感,而紧张的体力劳动和脑力劳动又会使人产生疲劳感。出现以上情况,可以通过休息、睡眠、沐浴、放松按摩等恢复措施使疲劳得以消除。但神经的疲劳是产生深度疲劳的主要因素,因此,除采用上述方法外,还可采用一些调节心理活动的积极措施,而健美运动则能起到这方面的作用。通过卓有成效的锻炼效果来吸引人的注意力,如通过一段时间锻炼后,肌肉增长了,多余的脂肪减掉了,体形健美了,人在心理上就会产生一种满足用通过优美明快的音乐,节奏鲜明而又活泼愉快的形体练习,来调节人的心理活动,松弛一下紧张的神经,转移和消除人的疲劳感、压抑感,使大脑得到积极的休息。健美运动还可以陶冶人的美好情操。爱美之心人皆有之,如果一个人执著地追求健与美,追求生活中真、善、美的东西,他就能自觉地抵制假、恶、丑的现象,感到生活很充实。因而在工作和学习中就会精神振奋、精力充沛、注意集中、充满信心。健美训练所带来的形体美、姿态美的良好变化.他也使人变得活泼开朗、朝气蓬勃。所以,健美运动是一种青春常在的运动,它可以调节人的心理活动,陶冶人的美好情操。

(五)提高神经系统机能,培养顽强意志品质中枢神经系统由脑和脊髓构成,而共最高指挥机关则是大脑皮层。它一方面担负着管理和调节人体内部各器官系统的活动,保持人体内部环境的平衡,另一方面则维持人体与外部环境的平衡。健美运动是在中枢神经系统的支配调节下进行的。反过来,进行健美锻炼也能提高中枢神经系统的机能水平。它能够提高神经过程的强度和集中能力,提高均衡性和灵活性,从而提高有机体对内外环境的适应能力。经常坚持健美锻炼的人,一般能睡得熟、睡得深,很少息神经衰弱症。

    健美训练中,肌肉经常要工作到极限,运动员要经常克服由于大运动量训练所