前前一期说了(感兴趣的小伙伴可以过去看看)
其中提到了^和$,当时只是简单说明了这个表达式,今天来详细说明一下使用方法
先说明一下两个表达式含义:
- ^匹配开始位置
- $匹配结束位置
来看个简单的demo
import java.util.regex.pattern; /** * @author yanghao * @version patterntest.java, v 0.1 2019-03-30 09:41 */ public class patterntest { /** * 待匹配字符串 */ private static final string tempstr = "a.b.c.d"; /** * 匹配开始位置表达式 */ private static final pattern pattern_start = pattern.compile("^a"); /** * 匹配结束位置表达式 */ private static final pattern pattern_end = pattern.compile("d$"); public static void main(string[] args){ system.out.println("pattern_start === " + pattern_start.matcher(tempstr).replaceall("demo")); system.out.println("pattern_end === " + pattern_end.matcher(tempstr).replaceall("demo")); } }
运行结果如下:
pattern_start === demo.b.c.d
pattern_end === a.b.c.demo
从运行结果可以看出,待匹配字符串的开始和结尾已经被替换掉了
我们在来看下,非开头和结尾的情况
编写demo如下:
import java.util.regex.pattern; /** * @author yanghao * @version patterntest.java, v 0.1 2019-03-30 09:41 */ public class patterntest { /** * 待匹配字符串 */ private static final string tempstr = "a.b.c.d"; /** * 开始+中间字符串表达式 */ private static final pattern pattern_start_middle = pattern.compile("^b"); /** * 中间字符串表达式 */ private static final pattern pattern_middle = pattern.compile("b"); public static void main(string[] args){ system.out.println("pattern_start_middle === " + pattern_start_middle.matcher(tempstr).replaceall("demo")); system.out.println("pattern_middle === " + pattern_middle.matcher(tempstr).replaceall("demo")); } }
运行结果如下:
pattern_start_middle === a.b.c.d
pattern_middle === a.demo.c.d
此测试结果可以看出,如果加了^表达式,表示一定要以此为开始才能匹配到,那么同理,$表达式一定要以此为结尾才能匹配到,小伙伴们可以自己去写个demo测试一下?
附:在正则表达式中^ 和 $ 同时出现的含义
当 ^ 和 $ 同时出现时,表示只能匹配 ^ 和 $ 之间的内容,例:
/^abc$/ 只能匹配'abc'
容易被理解为abcabc这种形式的也是可以的,但其实不行。
准确来说这么理解:
必须以a开头,必须以c结束,a和c的中间只写了b,所以只能匹配’abc’。
‘abcabc’的开头a和结尾c中间是’bcab’,与’b’没有任何关联,所以不对。
/^a.c$/ 可以匹配a加任意单个字符加c,比如abc,aec,acc,a2c等
总结
到此这篇关于正则表达式中^和$的含义与实例的文章就介绍到这了,更多相关正则表达式^和$内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论