正则表达式
正则表达式,是字符串匹配模式,匹配到符合正则规则的字符串。
用编程思想来解释它:
输入:若干长度的字符串
过程:正则表达式处理
输出:符合正则表达式的子串
用官方的解释来解释它如下:
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则的基本规则:
java中String类的正则方法
注意:*、+ 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。(*、+ 默认的都是贪婪匹配)
实例:
当需要在文件中运用正则的时候:
文件中的全部字符代表一个输入,
符合正则表达式的是若干输入。
正则表示式:'.*?\s?' 等价于:'.*?'
解释:匹配文件中单引号中有若干字符(换行符除外)的非贪恋匹配的子串。
重点易混淆的地方:
. 这个点是个很好用的东西,代表一个字符,但是除换行符之外,除换行符之外,除换行符之外,(换行符具体是什么看下文)
^这个代表是一行的开头,表示接下来的字符必须是一行的第一个字符(也就是上一行的换行符之后)
$这个代表是一行的结尾,表示上一个字符必须是一行的最后一个字符(也就是当前换行符之前)
换行符这个是个比较不同统一的概念:要看具体的文本编辑工具,idea匹配换行就是\n(不区分文件结尾符,idea底层做了操作,自作聪明),notepad++匹配换行是根据文件结尾符来判断(这个才是最正规的正则表示式匹配)。
各种操作系统创建文件时,默认的换行符如下:
windows里采用:\r\n,也就是CRLF
linux或unix或新版mac采用:\n,也就是LF
老版mac采用:\r,也就是CR
最后想说一句
今天做的一切挣扎都是在为明天积蓄力量,所以别放弃!