. - 除换行符以外的所有字符。
^ - 字符串开头。
$ - 字符串结尾。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
{}一般是用来匹配的长度。
{n} - 匹配 n次。
{n,} - 匹配 n次以上。
{m,n} - 最少 m 次,最多 n 次匹配。
() - 为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串.可以理解为数学计算中的()
[] 是定义匹配的字符范围。比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符和数字。
以哈。哈。哈。哈。哈。这种一个中文一个标点,且以中文结束的格式为例。
- 中文字符是“[\u4e00-\u9fa5]”
- 标点符号可以以[-,.?:;’"!`,。?:;‘’!/]这种方式匹配,将需要匹配的符号写进[]即可。
- 将需要匹配的格式拆分为n个(中文+符号) + 一个中文。
- [\u4e00-\u9fa5][-,.?:;’"!`,。?:;‘’!/]可以匹配"哈。" 这种模式。
- ([\u4e00-\u9fa5][-,.?:;’"!`,。?:;‘’!/])+ 匹配n个"哈。"
- (([\u4e00-\u9fa5][-,.?:;’"!`,。?:;‘’!/])+)[\u4e00-\u9fa5]匹配"哈。哈。哈。哈。哈。"
- 需要注意我们只想匹配"哈。“这种模式,而不是"哈哈哈哈。”
- 此时需要用到^与$ 两个符号,所以最终的结果为:
((^[\u4e00-\u9fa5]$[-,.?:;'"!`,。?:;‘’!\/])+)[\u4e00-\u9fa5]