tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
background-color: #f9f9f9;
}
.toc li {
list-style: none;
}
p {
line-height: 1.8em;
}
body>p {
margin-bottom: 1.8em;
}
body>p>img.center,
body>p>a>img.center {
display: block;
margin: 0 auto;
background-color: rgba(128,128,128,0.3);
}
body {
font-family: Helvetica, Tahoma, Arial, STXihei, "华文细黑", "Microsoft YaHei", "微软雅黑", Heiti, "黑体", SimSun, "宋体", sans-serif;
font-size: 1.15em;
font-weight: 100;
// line-height: 1.8em;
color: #2f2f2f;
}
em.cjk_emphasis{
font-style: normal;
font-family: Georgia,"Times New Roman",Times,"楷体","AR PL UKai CN", "NSimSun","Songti SC","SimSun",serif!important;
}
body dt,
body dd {
line-height: 1.35em;
}
body code {
background-color: #D6DBDF;
border: 0;
border-radius: 4px;
color: #2C3E50;
font-size: 90%;
padding: 2px 4px;
}
body h1 {
line-height: 1.6;
}
body h2 {
line-hieght: 1.1;
}
body h3 {
line-height: 1.1;
}
.mark{
border: 0;
background-color: rgba(255,255,0,0.7);
border-radius: 4px;
color: #2C3E50;
font-size: 90%;
padding: 2px 4px;
}
code .mark{
border-radius: 0px;
font-size: initial;
padding: initial;
}
a.attachment{
border: 1px solid #3b83c0;
display: inline-block;
padding: 5px;
margin: 2px;
}
.checkbox .checked{
text-decoration: line-through;
}
.flow-chart, .sequence-diagram{
text-align: center;
}
.plot, .plot-image{
text-align: center;
min-height: 200px;
min-width: 200px;
}
pre {
line-height: initial !important;
word-wrap: break-word;
word-break: break-word;
}
/*
Paraíso (light)
Created by Jan T. Sott (http://github.com/idleberg)
Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
*/
/* Paraíso Comment */
.hljs-comment,
.hljs-title {
color: #776e71;
}
/* Paraíso Red */
.hljs-variable,
.hljs-attribute,
.hljs-tag,
.hljs-regexp,
.hljs-name,
.ruby .hljs-constant,
.xml .hljs-tag .hljs-title,
.xml .hljs-pi,
.xml .hljs-doctype,
.html .hljs-doctype,
.css .hljs-id,
.css .hljs-class,
.css .hljs-pseudo {
color: #ef6155;
}
/* Paraíso Orange */
.hljs-number,
.hljs-preprocessor,
.hljs-built_in,
.hljs-literal,
.hljs-params,
.hljs-constant {
color: #f99b15;
}
/* Paraíso Yellow */
.ruby .hljs-class .hljs-title,
.css .hljs-rule .hljs-attribute {
color: #fec418;
}
/* Paraíso Green */
.hljs-string,
.hljs-value,
.hljs-inheritance,
.hljs-header,
.ruby .hljs-symbol,
.xml .hljs-cdata {
color: #48b685;
}
/* Paraíso Aqua */
.css .hljs-hexcolor {
color: #5bc4bf;
}
/* Paraíso Blue */
.hljs-function,
.python .hljs-decorator,
.python .hljs-title,
.ruby .hljs-function .hljs-title,
.ruby .hljs-title .hljs-keyword,
.perl .hljs-sub,
.javascript .hljs-title,
.coffeescript .hljs-title {
color: #06b6ef;
}
/* Paraíso Purple */
.hljs-keyword,
.javascript .hljs-function {
color: #815ba4;
}
.hljs {
display: block;
overflow-x: auto;
background: #e7e9db;
color: #4f424c;
padding: 0.5em;
-webkit-text-size-adjust: none;
}
.coffeescript .javascript,
.javascript .xml,
.tex .hljs-formula,
.xml .javascript,
.xml .vbscript,
.xml .css,
.xml .hljs-cdata {
opacity: 0.5;
}
-->
WAHT
正则表达式 描述 一些规则,而这些规则通过规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式,用来查找和匹配字符串,
hi
这个简单的字符串就是一个正则表达式,精确匹配 hi
这个单词,但我们不仅仅需要找到这个 hi
,还要找到一个单独 hi
的单词,或是含有 hi
的字符的一个单词.那么我们就需要 元字符(metacharacter)
元字符
元字符是正则表达式规定的特殊代码,使用一个或是一组规定好的字符代替某些字符,这里的规定好的字符类似的有*
,.
,\b
...,而某些字符可能时一个特殊字符,像一个空格‘ ‘,或是一段任意字符.先来一个表,再解释
常用的元字符代码 | 说明 |
---|---|
* | 没有匹配任何字符,代表任意次数出现的模式,用来修饰前导字符 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
.
& *
是不是对 *
的感觉很诡异,什么任意次数,让我们把它和 .
放在一起考虑, .
匹配除换行符以外的任意字符,而将.*
则匹配不包含换行符的任意长度的字符串
\b
英文中是以空格作为分离单词的标志,而\b则匹配一个这样一个分割单词的位置
来个实例: \bhi\b.*\bword\b
寻找一下在包含 hi 和 word 两个单词的句子,并且还在一行
####\d
匹配数字,没错它只匹配数字
来个实例: 0\d\d-\d\d\d\d\d\d\d\d
以0开头,然后是两个数字,然后是一个连字号“-” ,最后是8个数字
来个实例: \b\w{6}\b
匹配刚好6个字符的单词,知道了码,\w
匹配的东西字符,数字,和下划线这些都是组成 单词的必要东西,所以一般用它匹配某个单词,而 {8}
,就是前导字符的修饰,和 *
类似,不过是指明了到底匹配了几次
^
$
^
用来匹配 查找字符串的开头
$
用来匹配 查找字符串的结尾
这两者和 \b
类似,都用来匹配字符串的某一个位置,而不是实际的一个字符
来个实例: ^\d{5,12}$
匹配长度为 5-12 的数字
字符转义
如果你学过 c或是任何一门语言,他们都有采用特定字符控制输出的功能,而为了输出这些特定字符,就会利用到字符转义, 正则表达式也对 元字符 确定了一个字符转义的规则
加 \
,例如 \
变为\\
,.
变为\.
,以此类推
重复
这里的重复不是单指一个特定字符的重复,也指不同字符出现的重复
代码/语法 | 说明 |
---|---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
### 来个实例:Windows\d+
匹配Windows后面跟1个或更多数字
字符类
为了控制和表达更多的字符,引入了字符类,他是一个字符集合,使用[
,]
将其括起来。
在正则表达式中就充当一个元组
例如 [.?!]
匹配标点符号(.或?或!),[aeiou]
就匹配任何一个英文元音字母.