黑马程序员技术交流社区

标题: 正则表达式的一些疑惑 [打印本页]

作者: 周朋飞    时间: 2012-6-25 15:37
标题: 正则表达式的一些疑惑
本帖最后由 周朋飞 于 2012-6-25 18:12 编辑

/^[a-zA-Z_]{1}[a-zA-Z_0-9]*$/当中的^[a-zA-Z_]{1}这个括号里的1 是什么意思 这整个是什么意思
作者: sbeeqnui1987    时间: 2012-6-25 16:35
正则表达式:
/^                   :匹配行首,即,从每行的开头开始匹配
[a-zA-Z]{1}          :第一个字符要求是字母,即从a到z或者A到Z

作者: 王冰    时间: 2012-6-25 16:35
^[a-zA-Z_]{1}括号里的1 表示开始的一个字符必须是a到z或A到Z中的任意一个字符,如果为其它数字如3就表示开始的3个字符中的每一个必须是a到z或A到Z中的任意一个字符,整个的意思就是说这串字符的第一个必须是以是a到z或A到Z中的任意一个字符开始,后面接着0个或多个a到z或A到Z或0-9中的字符。也就是说形如a,b1,BZ0,Ma0zD都可以
作者: 周兴中    时间: 2012-6-25 16:46
/^[a-zA-Z_]{1}[a-zA-Z_0-9]*$/

{n}:表示正好出现n次,或者说只出现n次 [a-zA-Z_]{1}: 表示大小写字母和下划线这些字符只出现1次,就是说只能是 a-z A-Z _ 中的一个

^:表示行的开头
$:行的结尾
*: 表示出现0次或多次  

/^[a-zA-Z_]{1}[a-zA-Z_0-9]*$/  整句的意思是:第一个字符只能在(字母和_)之间,第2个字符可以没有或者范围在(字母,数字,下划线)之间.

还有很多符号,请参考API文档.
作者: 张华廷    时间: 2012-6-25 16:57
a-zA-Z]{1} :第一个字符要求是字母,即从a到z或者A到Z
{n}:表示正好出现n次,或者说只出现n次 [a-zA-Z_]{1}: 表示大小写字母和下划线这些字符只出现1次,就是说只能是 a-z A-Z _ 中的一个/^[a-zA-Z_]{1}[a-zA-Z_0-9]*$/  整句的意思是:第一个字符只能在(字母和_)之间,第2个字符可以没有或者范围在(字母,数字,下划线)之间.


作者: 陈少文    时间: 2012-6-25 17:07
/^[a-zA-Z_]{1}[a-zA-Z_0-9]*$/

^                     行的开头
[a-zA-Z]          a 到 z 或 A 到 Z,两头的字母包括在内(范围)
X{1}              指是的恰好出现一次
[a-zA-Z_0-9]   a 到 z 或 A 到 Z,两头的字母包括在内(范围)或者_  或者从0到9
*                     零次或多次
$                     行的结尾

楼主这些东西可以不用记
用的时候直接查API,
java.util.regex.Pattern
看得出楼主在学 正则表达式

用途
字符串匹配(字符匹配)
字符串查找
字符串替换

给楼主一个自己总结时的例子:
/*
查找网页中Email地址
用到正则表达式
关键点:
1)建立模式
2)匹配
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailSpider {
public static void main(String[] args)
{
       //用BufferedReader目的读取一行
        try {
                  BufferedReader
                  //需要查找的网页文件
                  br = new BufferedReader(new FileReader("c:\\20120621.html"));
  
                   String line = null;

                   while((line = br.readLine())!= null)
                   {
                          parse(line);
   
                    }
           } catch (FileNotFoundException e1) {
           // TODO Auto-generated catch block
             e1.printStackTrace();

           } catch (IOException e) {
                // TODO Auto-generated catch block
                   e.printStackTrace();
            }
             }


     private static void parse(String line)
     {
              //建立模式
             Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
              //匹配
              Matcher m = p.matcher(line);
  
               while(m.find())
               {
                         System.out.println(m.group());
                }
  
          }
}


作者: 周朋飞    时间: 2012-6-25 18:12
嗯  我同意周兴中的说法 因为我试过 却是下划线开头也可以




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2