1. 程式人生 > >正則表示式知識詳解之匹配開頭或結尾 (java版示例)

正則表示式知識詳解之匹配開頭或結尾 (java版示例)

示例功能:
1、匹配字串的開頭
2、匹配字串的結尾

package com.songguoliang.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正則表示式知識
 * @date 2016-04-15 10:14:48
 * @author sgl
 */
public class Demo01 {

    /**
     * 匹配字串,並且是以該字串開頭或結尾
     * 字串邊界的元字元有兩個:一個是用來匹配字串開頭的^,另一個是用來匹配字串結尾的$
     * @date 2016-04-20 15:19:14
     * @author sgl
     */
public static void stringBoundary(){ String str="hello world,hello java,hello java"; System.out.println("===========匹配字串==========="); //匹配str中所有字串hello,這時str中3個hello都能匹配上,通過下面列印的匹配上的字串的位置可以看出 Pattern p=Pattern.compile("hello"); Matcher m=p.matcher(str); while(m.find
()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } System.out.println("===========匹配字串,並且該字串是在開頭的位置==========="); // ^表示匹配字串的開頭,但是如何在[]裡面則表示非,如[^a-f] 不匹配a-f // "hello""^hello"的區別就是:前者匹配時不管是不是在開頭位置,只要能匹配就行,後者則是不但要能匹配而且還要是在開頭的位置。這時str中3個hello只有第1
個能匹配上。 p=Pattern.compile("^hello"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } System.out.println("===========匹配字串==========="); //這時str中兩個java都能匹配上 p=Pattern.compile("java"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } System.out.println("===========匹配字串,並且是該字串是在末尾的位置==========="); //這時str中兩個java只有第2個才能匹配上 p=Pattern.compile("java$"); m=p.matcher(str); while(m.find()){ System.out.println(m.group()+" 位置:["+m.start()+","+m.end()+"]"); } } public static void main(String[] args) { Demo01.stringBoundary(); } }

執行結果:

===========匹配字串===========
hello   位置:[0,5]
hello   位置:[12,17]
hello   位置:[23,28]
===========匹配字串,並且該字串是在開頭的位置===========
hello   位置:[0,5]
===========匹配字串===========
java   位置:[18,22]
java   位置:[29,33]
===========匹配字串,並且是該字串是在末尾的位置===========
java   位置:[29,33]