JAVA正则表达式获取特定的字符串

作者&投稿:南戚 (若有异议请与网页底部的电邮联系)
求一java正则表达式,提取指定字符串~

^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:

"^The": 开头一定要有"The"字符串;

"of despair$": 结尾一定要有"of despair" 的字符串;

那么,

"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。

"notice": 匹配包含notice的字符串。

你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。

接着,说说 '*', '+',和 '?',

他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:

"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1}, 这里是一些例子:
"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
要点, '*', '+',和 '?'只管它前面那个字符.

你也可以在大括号里面限制字符出现的个数,比如

"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
现在我们把一定几个字符放到小括号里,比如:

"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加一个字符再加一个0到9的数字

"^.{3}$": 三个任意字符结尾 .

中括号括住的内容只匹配一个单一的字符

"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样);

"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文

"^[a-zA-Z]": 匹配以大小写字母开头的字符串

"[0-9]%": 匹配含有 形如 x% 的字符串

",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串

你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 "%[^a-zA-Z]%" 匹配含有两个百分号里面有一个非字母的字符串.

要点:^用在中括号开头的时候,就表示排除括号里的字符。为了PHP能够解释,你必须在这些字符面前后加'',并且将一些字符转义.

java正则提取需要用到Matcher类,下面给出案例示例供参考

需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X";// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来// 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");Matcher matcher = pattern.matcher(s);if(matcher.find())System.out.println(matcher.group(1));}}
关于Matcher 中的几个方法说明:
Mathcer.start()
Matcher.end()
Matcher.group()
当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息. start()返回匹配到的子字符串在字符串中的索引位置. end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置. group()返回匹配到的子字符串
示例代码如下,具体功能请参考注释
Pattern p=Pattern.compile(“\d+”); Matcher m=p.matcher(“aaa2223bb”); m.find();//匹配2223 m.start();//返回3 m.end();//返回7,返回的是2223后的索引号 m.group();//返回2223Mathcer m2=p.matcher(“2223bb”); m2.lookingAt(); //匹配2223 m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0 m2.end(); //返回4 m2.group(); //返回2223Matcher m3=p.matcher(“2223”); //如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出错,因为不匹配返回false m3.matches(); //匹配整个字符串 m3.start(); //返回0 m3.end(); //返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串 m3.group(); //返回2223
另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.
示例如下:
Pattern p=Pattern.compile(“([a-z]+)(\d+)”); Matcher m=p.matcher(“aaa2223bb”); m.find(); //匹配aaa2223 m.groupCount(); //返回2,因为有2组 m.start(1); //返回0 返回第一组匹配到的子字符串在字符串中的索引号 m.start(2); //返回3 m.end(1); //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置. m.end(2); //返回7 m.group(1); //返回aaa,返回第一组匹配到的子字符串 m.group(2); //返回2223,返回第二组匹配到的子字符串
注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。

^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:

"^The": 开头一定要有"The"字符串;

"of despair$": 结尾一定要有"of despair" 的字符串;

那么,

"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。

"notice": 匹配包含notice的字符串。

你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。

接着,说说 '*', '+',和 '?',

他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:

"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1}, 这里是一些例子:
"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
要点, '*', '+',和 '?'只管它前面那个字符.

你也可以在大括号里面限制字符出现的个数,比如

"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
现在我们把一定几个字符放到小括号里,比如:

"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的字符串;

一个点('.')可以代表所有的单一字符,不包括"\n"

如果,要匹配包括"\n"在内的所有单个字符,怎么办?

对了,用'[\n.]'这种模式.

"a.[0-9]": 一个a加一个字符再加一个0到9的数字

"^.{3}$": 三个任意字符结尾 .

中括号括住的内容只匹配一个单一的字符

"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样);

"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); 一般我们都用[a-zA-Z]来指定字符为一个大小写英文

"^[a-zA-Z]": 匹配以大小写字母开头的字符串

"[0-9]%": 匹配含有 形如 x% 的字符串

",[a-zA-Z0-9]$": 匹配以逗号再加一个数字或字母结尾的字符串

你也可以把你不想要得字符列在中括号里,你只需要在总括号里面使用'^' 作为开头 "%[^a-zA-Z]%" 匹配含有两个百分号里面有一个非字母的字符串.

要点:^用在中括号开头的时候,就表示排除括号里的字符。为了PHP能够解释,你必须在这些字符面前后加'',并且将一些字符转义.

String a = "A:123;B:234;C:456;";
Pattern pattern = Pattern.compile("\\d{3}");
Matcher matcher = pattern.matcher(a);
while (matcher.find()){
    System.out.println(matcher.group());
}


\d+


String a=" ID:1234567;Psd:asd1234567;Name:jack;";
Pattern pattern = Pattern.compile(":.*?;");
Matcher matcher = pattern.matcher(a);
while (matcher.find()){
System.out.println(matcher.group().replace(":", "").replace(";", ""));
}


java学习有哪些课程
Java的学习课程主要有Java基础、Java语言、数据库开发等,想学习Java推荐选择【达内教育】,该机构致力于面向IT互联网行业,培养软件开发工程师、测试工程师、UI设计师、网络营销工程师、会计等职场人才。Java的学习课程:1、对Java有基本认知。2、学习Java基础,包括Java语言、Java语法和各种基本算法,了解...

目前最流行的编程语言是哪个,我是做PHP的
python和java吧

中国那种编程语言最受公司欢迎
2、Perl Perl ,一般被称为“实用报表提取语言”(Practical Extraction and Report Language)。他于1987年12月18日发表。Perl借取了C、sed、awk、shell ing以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,象awk...

PHP从入门到精通的图书1
书 名: PHP从入门到精通作 者:潘凯华同名出版社:清华大学出版社出版时间: 2008ISBN: 9787302179597开本: 16定价: 68.00 元 VD语音视频教学光盘22小时教学视频录像,全程语音讲解《PHP从入门到精通》实例源程序、相关素材《PHP从入门到精通》特色基础知识一核心技术一高级应用一项目实战268个应用实例,...

武威市17562403051: 求一java正则表达式,提取指定字符串 -
枝石荆肤: ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:"^The": 开头一定要有"The"字符串;"of despair$": 结尾一定要有"of despair" 的字符串; 那么,"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上...

武威市17562403051: java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串 -
枝石荆肤: string teststring = "java怎么利用正则表达式从给定的字符串中取出匹配规则字符串"; pattern pattern = pattern.compile("\\w+"); matcher matcher = pattern.matcher(teststring); while(matcher.find()) { system.out.println(matcher.group()); }

武威市17562403051: 如何使用Java的正则表达式查找符合条件的字符串?
枝石荆肤: w{n},指出现正好n个可用于标识的字符.String s = "49785790f0aba048e55a0289f377edb4"; String regex = "com/7655/zh-cn/preview/\\w{"+s.length()+"}/preview"; if(指定字串.matches(regex)) 记下匹配的串; 至于要找文件中最后一个这样的串,文件中如果是以行为分隔符的话,则每次从文件中取一行再跟正则表达式比较,如果是以空隔或其他字符分隔的话,则用StringBuffer取出整个文件的串,然后用StringTokenizer分解整个串得到一个字符串数组.

武威市17562403051: java如何用正则表达式从字符串中提取一个字串 -
枝石荆肤: "ORG([\\s\\S]*?)(?=ADR;HOME)"

武威市17562403051: 用java的正则表达式提取需要的字符串 -
枝石荆肤: 123456 Pattern regexp = Pattern.compile("void (\\w+)\\([\\w, ]*\\)");String str = "void test();";Matcher matcher = regexp.matcher(str);if(matcher.find()){ System.out.println(matcher.group(1));}

武威市17562403051: java 怎么提取 字符串中 匹配一条正则表达式的字符串 -
枝石荆肤: public static List<LabelValueBean> getList(String str) { List<String> list = new ArrayList<String>(); Pattern pattern = Pattern.compile("\\{@[A-Za-z0-9]+#\\}"); if(UtilValidate.isEmpty(str)){ return null; } Matcher matcher = pattern.matcher(str); while (...

武威市17562403051: java正则表达式获取指定内容 -
枝石荆肤: 唉,专门替你试了下,代码如下. String str = "lkjhgf<a herf=\" fdsdadf, \" title=\"韩国和规范\">yfffgfg<a herf=\"gfytffjhhjg\" title=\"预付费更改\">iuiuyuytf<a herf=\"fhgytfddtr\" title=\"了解客户感觉\">uigfg";Pattern p = Pattern.compile("title=\"(.+?)\"");Matcher m = p.matcher(str);while(m.find()) {System.out.println(m.group(1));}

武威市17562403051: java正则截取指定字符串 -
枝石荆肤: import java.util.regex.Matcher;import java.util.regex.Pattern; public class Hello { public static void main(String[] args) { String re = "\\[([^\\]]+)\\]"; String str = "[您好],abcdefg,[abc]"; Pattern p = Pattern.compile(re); Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.group(1)); } }}

武威市17562403051: Java正则表达式截取固定长度的字符串 -
枝石荆肤: String reg = "^(.{10}).*$"; String str = "";str.replaceAll(reg, "$1");

武威市17562403051: JAVA正则表达式查找字符串 -
枝石荆肤: 一般都是在循环里面默认最后增加一个逗号,不管是否有多个,最后在循环完毕删除最后一个逗号

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网