我现在正在使用降价博客,但我不知道为什么双方都有绿色利润
什么可以导致这个?以下是我的博客:
##匹配单个字符##
###匹配纯文本###
#
`文本`: My name is Ben
`正则表达式`: Ben
`结果`: `Ben`
这里使用的正则表达式是纯文本,匹配原始文本里面的`Ben`.
<!-- more -->
#
`文本`: Hello, my name is Ben, my website is benforta.com
`正则表达式`: my
`结果`: `my`
这里的正则表达式匹配了第一个`my`,但忽略了第二个`my`.默认情况下,正则表达式只匹配第一个匹配的结果,如果想把所有结果找出来,(例如在JavaScript里),可以使用g(global).
此外,正则表达式会区分大小写,my可以匹配my,但不能匹配My.
###匹配任意字符###
`.`在正则表达式里面可以匹配任意字符,甚至是字符本身.
#
`文本`: sales.xls sales1.xls sales2.xls ape.xls enrope.xls na1.xls na2.xls
`正则表达式`: sales.
`结果`: sales. sales1 sales2
这里的`.`匹配了sales后的单个字符,所以只有sales1.xls和sales2.xls与之匹配.
#
`文本`: sales.xls sales1.xls sales2.xls ape.xls enrope.xls na1.xls na2.xls
`正则表达式`: .a.\.xls
`结果`: na1.xls na2.xls
这里的正则表达式中有一个`\`,表示转义.转义之后的`.`字符不再表示其在正则表达式里的意思,而只匹配一个普通的点.
##匹配一组字符##
###匹配多个字符中的某一个###
#
`文本`: sales.xls sales1.xls sales2.xls sa1.xls ape.xls enrope.xls na1.xls na2.xls
`正则表达式`: [ns]a.\.xls
`结果`: sa1.xls na1.xls na2.xls
这里的正则表达式中的`[na]`表示匹配n和a中的任意一个字符.
#
`文本`: The phrase "regular expression" is often abbreviated as "regex" or "RegEx"
`正则表达式`: [Rr]eg[Ee]x
`结果`: regex, RegEx
###利用字符集合区间###
#
`文本`: sales.xls sales1.xls sales2.xls sa1.xls ape.xls enrope.xls na1.xls na2.xls sam.xls
`正则表达式`: [ns]a[0123456789]\.xls
`结果`: sa1.xls na1.xls na2.xls
这里的文本中新加了一个sam.xls,但是我们只想匹配以n或s开头,以数字结尾的字符串,所以我们定义了一个数字区间来匹配所有的数字.但是这里的字符区间只匹配0-9,不能匹配10,20或者100.
* tips: 上面的[0123456789]可以用[0-9]来代替
* 还有一些可以也能使用连字符来代替的有: [a-z] [A-Z] 等等.
`note`: 连字符`-`是一个特殊的元字符,作为元字符它只能被用在[]之间,否则它就只是一个普通的字符与-匹配,不需要转义.
在一个字符集合里可以给出多个字符区间,比如下面这个集合里可以匹配任意的字母和数字(0-9之间):
`[a-zA-Z0-9]`
#
匹配RGB值(RGB值是由6个连续的任意字符或者0-9间的数字构成)
`文本`: <body bgcolor="#336655" text="#FFFFFF" height=10 width=20>
`正则表达式`: #[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]
`结果`: #336655, #FFFFFF
###取非匹配###
#
`文本`: sales.xls sales1.xls sales2.xls sa1.xls ape.xls enrope.xls na1.xls na2.xls sam.xls
`正则表达式`: [ns]a[\^0-9]\.xls
`结果`: sam.xls
这里的`^`表示非,所以[\^0-9]就表示不是0-9中数字的任意一个.
##使用元字符##
###对特殊字符进行转义###
`元字符`: 在正则表达式里面有特殊含义的字符,例如`.`是一个元字符,用来匹配任意字符.`^`是一个元字符,用来取非.
`转义`: 如果想要匹配字面意义上的元字符(而不是其在正则表达式里的意思),就需要进行转义.通常是在元字符前面加上反斜杠`\`.
#
`文本`:
```javascript
var myArray = new Array();
if (myArray[0] == 0) {
...
}
```
`正则表达式`: myArray[0]
`结果`: myArray
本想匹配整个myArray[0],但却只匹配了myArray.因为[0]在正则表达式里表示集合中的一个,这里就是0,所以它期待的结果是myArray后面跟上0-9之间任意一个数字,这里没有匹配的结果,所以只匹配到了前面的字符串,所以需要对[]进行转义.
`正确的正则表达式`: myArray\[0\] 或者myArray\[[0-9]\]来匹配第0个到第9个数组.
`note`: 因为`\`在正则表达式里面也是一个元字符,如果想要匹配\,也需要对其转义,即`\\`.
下面的这张图表总结了一些特殊的元字符:
{% img /images/regex-1_1.png %}
`tips`: 可以使用`\r\n`来匹配一个回车+换行的组合.
###匹配特定的字符类别###
####匹配数字与非数字####
`\d`: 匹配任意一个数字字符,等价于[0-9]
`\D`: 匹配任意一个非数字字符,等价于[\^0-9]
####匹配字母和数字与非字母和数字####
`字母和数字`: A-Z, a-z, 0-9和下划线`_`.
`\w`: 匹配任意一个字母数字字符或下划线集合(等价于[A-Za-a0-9])
`\W`: 与上面的匹配相反(等价于[\^A-Za-a0-9])
####匹配空白字符和飞空白字符####
`\s`: 匹配任意一个空白字符(等价于[\f\n\r\t\v])
`\S`: 匹配任意一个非空白字符(等价于[\^\f\n\r\t\v])
####使用POSIX字符类####
POSIX是许多正则表达式(但不是所有,例如JavaScript就不支持POSIX)都支持的一种简写形式.
下面是POSIX字符表:
{% img /images/regex-1_2.png %}
可以使用POSIX来代替上面的一个例子:
#
`文本`: <body bgcolor="#336655" text="#FFFFFF" height=10 width=20>
`正则表达式`: #[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
`结果`: #336655, #FFFFFF
这里的POSIX使用了两层括号,里面的一层表示POSIX字符类,外面的那一层表示字符集和.
答案 0 :(得分:0)
好吧,我找到了解决方案。字符“&lt;”
之前应该有一个转义符