正则表达式

正则表达式

前言

相信大家对正则的态度就是

正则表达式_第1张图片

但是当每次在需要做校验或者的时候,都会十分狼狈的去百度,去CSDN

将找到的正则表达式直接copy过来,也不会去看里面写的啥

直接就信心满满的去运行

然后就要么报错,要么啥也没匹配到

正则表达式_第2张图片

看别人写的java代码,我们是痛苦的

看别人写的正则表达式,我们感受不到痛苦,是绝望的,直接放弃了

正则表达式_第3张图片

实在受不了这种任人宰割的感觉,所以就花了几天彻彻底底地将正则学了一遍

最真实地感觉就是,正则不简单,得把它当作一种语言去学

这样才可以拿出态度去接受它

下面是学习笔记

介绍

正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的文字模式

该模式对文本查找时需要匹配的一个或多个字符串描述,给出一个匹配模板。

它可以大大简化文本识别工作,现已超出了某种语言或某个系统的局限,成为被人们广为使用的工具。

先给大家介绍一个在线检测正则表达式的网站,十分好用!

链接如下:https://regex101.com

声明:以下我使用的某些概念在不同网站上,不同视频中,都会有不同的叫法,我会尽量将所有的讲法都标注

修饰符

下面在开始正题之前,我要先给大家讲一个修饰符的概念。

我自己在学这个的时候,没有哪一个视频或者教程会将修饰符放到最前面

但是在我学下来,我觉得如果将这个知识点放在最前面,而且这个知识点也不难,只是一个概念

这可能会有利于大家的学习,所以我就尝试将此知识点前置

在正则表达式中有很多修饰符

正则表达式_第4张图片

我们只看常用的四个

大家注意这个地方,这个地方显示的就是当前开启的修饰符

在这里插入图片描述

global

正则表达式_第5张图片

正则表达式_第6张图片

可以看到这其中的区别就是

非全局模式只匹配了第一个匹配成功的

而全局模式则匹配了所有匹配成功的

multi line

这里只演示^的情况

正则表达式_第7张图片

正则表达式_第8张图片

这里要有个前置知识,就是

^匹配文本开头

$匹配文本结尾

我们都知道文本只有一个开头和一个结尾

但是开启了multi line之后

^不仅可以匹配文本开头而且可以匹配行首

$不仅可以匹配文本结尾而且可以匹配行尾

single line

正则表达式_第9张图片

正则表达式_第10张图片

这里也需要有前置知识

.可以匹配除了\n之外的所有字符

开启了single line之后

.可以匹配所有的字符,包括\n

insensitive

正则表达式_第11张图片

正则表达式_第12张图片

该修饰符就是关闭大小写敏感

aA是一样的

简单匹配

固定字符串

假如我要在下列文本中匹配export字符串,我们可以这么写

正则表达式_第13张图片

这就是对固定字符串的匹配,这很简单

范围字符

又叫元字符

在正则表达式中,我们有以下表示一定范围的字符

符号 名称
. 匹配除 \n 以外的任何一个字符
\d 匹配单个数字字符,相当于[0-9]
\D 匹配单个非数字字符,相当于[^0-9]
\w 匹配单个数字、大小写字母、下划线字符,相当于[0-9a-zA-Z_]
\W 匹配单个非数字、非大小写字母字符,非下划线,相当于[^0-9a-zA-Z_]
\s 匹配任意一个\n、空格、tab
\S 与\s匹配的相反
\b 匹配每一个单词的前和后
\B 与\b匹配的相反

注意:一个范围字符只可以匹配一个属于该范围的字符

一个一个一个

​ 输入.发现除了\n全亮了是因为开启了global修饰符!

这里没什么好说的,背下,下面给一张图帮助记忆

正则表达式_第14张图片

自定义范围字符

对于十六进制的颜色,#后面只能出现数字和a-f的字符

我们发现内置的这些范围字符都不太好用

这时候就需要使用自定义范围字符

想要定义自定义范围字符,就需要使用[]

下面我们来写匹配十六进制的自定义范围字符

  • 自己写全
    • [0123456789abcdef]
  • 使用-连接符
    • [0-9a-f]

[]还有几种写法,我们使用案例来说明

栗一

数据如下,匹配80年代和90年代以外的

姓名  生日
芝麻 2001-05-22
章一 1993-08-09
沈家怡 1999-05-22
陆力丹 1989-02-19
王子怡 2002-12-15

正则表达式_第15张图片

[]内部的开头写^表示匹配除了方括号里面出现的字符

栗二

匹配特殊字符^或者$或者.

正则表达式_第16张图片

但是小伙伴可能写的顺序不是这样的,你可能是这样写的[^$.]

正则表达式_第17张图片

这里如果^放在第一位,他就会使用栗一种的功能

如果我就是想要用这种顺序写,但是还想匹配^特殊字符本身,可不可以呢?

当然可以啦,这里需要使用转义字符\登场了

正则表达式_第18张图片

栗三

这个案例就有点难了,我们来匹配正确的车牌号,匹配规则如下

普通车牌特征:

  1. 第1位是表籍贯的汉字
  2. 第2位是表城市的大写字母,不包括I和O。因为容易和数字0和1混淆
  3. 后5位是字母加数字,也不包括I和O

测试数据如下

湘C4ASF7
湘G9AWSE
湘O392LEY
鲁E2S1EF
湘D219U5
湘AS2BKN
皖91L2IZ
鲁I0H8F
鲁R10Y2F
A湘1R9GJ3
鲁REF02H
鲁2319G7
鲁3RGN90
N鲁23G90K

正则表达式_第19张图片

基本逻辑控制

在正则表达式中只有这两种逻辑关系,我们这里用一个案例来引出

匹配规则:匹配所有的http状态码

  • 401:未授权
  • 403:无权限访问
  • 404:找不到资源
  • 500:服务内部错误

测试数据如下

404
500
309
403
230
401
400
234
325
401
923
482
340
325

正则表达式_第20张图片

那且呢?

其实我们早就使用过

就比如我们这个案例中,404不就是么?

4并且0并且4

这三个数字同时满足,才匹配出来404

数量控制

我们回顾一下之前的匹配十六进制颜色的案例

测试数据如下:

.el-header {
  background-color: #BC0D13
  color: #CCCCCC
  line-height: 60px;
}

.el-aside {
  color: #5fe3a1
}

.active {
  background-color: #0086b3;
}

正则表达式_第21张图片

{}就是数量控制的语法,我们来看看不使用数量控制的时候应该怎么写

正则表达式_第22张图片

{n} 指定出现固定次数

{n,} 指定至少出现n次

{n,m} 指定出现n到m次

简写形式
符号 等价
* {0,}
+ {1,}
? {0,1}
懒惰匹配和贪婪匹配

该知识点我们配合案例来食用

匹配所有的span标签

测试数据

<span>span1span>kongge<span>span2span>

我们先来尝试一下

正则表达式_第23张图片

我们发现,它竟然全匹配了,这是为什么呢?

解释

+会尽量一直往后匹配,一直到无法匹配.为止

本来匹配到span1后面的<符号的时候,就可以停止匹配了

但是因为默认开启的是贪婪匹配,啥意思呢?

就是<还是符合.的吧,那就继续匹配

直到匹配到span2后面的<的时候,发现如果再匹配span2后面的<

那么我们正则表达式中最后的就没法匹配了,所以.就匹配到span2中的2为止

那让我们开启懒惰模式看看结果

正则表达式_第24张图片

解释

+会尽量一直往后匹配,一直到无法匹配为止

匹配到span1后面的<符号的时候

发现其实这个<已经可以匹配正则最后的<

那就结束匹配吧,所以就匹配出了第一组span标签

注意点:

开启懒惰模式中的?和我们在数量控制中的?不一样

懒惰模式中的?只能写在数量控制{}后面

数量控制{}只可以写在范围字符后面[a-f]或者\d这种

这里需要好好理解一下

删除所有的HTML注释

测试数据如下

有三种注释哦

DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Titletitle>
head>
<body>
<div id="app">
	<div>
		
		<input type="text" v-model:value="test"/>
		
	div>
div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
	let app = new Vue({
		el: '#app',
		data: {
			test: ''
		},
		/*		methods: {

                },*/
		watch: {
			test: {
				handler: function (newData,oldData) {
					console.log(newData);
					console.log(oldData);
				},
				// immediate: true
			}
		}
	});
script>
body>
html>

正则表达式_第25张图片

进阶

分组

分组指将匹配的内容,使用()划分成多个组块,分好的组可用于在匹配后提取、反向引用以及替换操作。

下面使用两个案例来做说明

提取信息转sql

什么意思呢?就是将提取出来的数据转化为DML语句

栗:insert into user(name,age,sex,birthday) values('芝麻','19','男','2001-05-22')

测试数据如下

芝麻   2001/05/22 19岁  男
章一   1993-08-09 20岁  女
沈家怡 1999.05.22  21岁 女
陆力丹 1989-02-19  19岁 男
王子怡 2002-12-15  19岁 男

正则表达式_第26张图片

$组号可以拿到括号中匹配的内容

匹配正确的自闭和标签

测试数据如下

<span>span1span>
<h2>h22h2>
<h2>h23h3>
<h3>h32h2>
<h1>h11h1>
<div>d iv1div>
<span>wrongdspan>

正则表达式_第27张图片

在正则表达式中使用\组号反向引用前面匹配的组

$0表示整个匹配的字符串

注意反向引用只用在表达式中引用之前的分组

匹配所有的JavaScript中的字符串

JavaScript中有三种字符串

1''
2""
3``

测试文本

const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer();

server.on("request",(req,resp)=>{
    let url = req.url;
    if(url==='/favicon.ico'){
        resp.end();
        return;
    }
    resp.setHeader('Content-type','text/html;charset=utf-8');
    console.log(`访问的网址的${url},访问方法是${req.method}`);
    let data = fs.readFileSync(path.join(__dirname,url));
    resp.end(data);
})
server.listen('80',()=>{
    console.log('服务启动\"成功\",80端口');
})

正则表达式_第28张图片

下面做个拓展

分组还有以下四种情况

  1. ?<名称>命名分组
  2. (?:)移除分组
  3. (())嵌套分组
  4. (\d)+分组中使用量词
命名分组

默认情况下通过组号来取值,此外也可以自定义命名组,语法是(?<名称> )

然后在程序中就可以通过<>中的名称来取值。

如:<(?(\S+?))>.*<\/\1></code> 该表达式就命名了一个<strong>title</strong>的组,在js的结果中就可通过<strong>title</strong>属性取值。</p> <blockquote> <p>注意:</p> <p>这种命名组只能用于在程序中提取操作,不能进行反向引用,也不能用在替换操作中。</p> <p>也正因为这种局限性所以命名组使用的很少。</p> </blockquote> <h6>移除分组</h6> <p><code>()</code>即用于子表达式,同时也是一个分组。</p> <p>如果只想用作子表达式,而不想用于分组就可以使用<code>(?: )</code>从分组列表中移除。</p> <p>比如<code>(?:\d{4})-(\d{2})-(\d{2})</code> 该表达式就只存在两个组,月<code>$1</code>和日<code>$2</code>。</p> <h6>嵌套分组</h6> <p>比如:<code>((\d{4})-(\d{2})-(\d{2}))</code> 其组号的命名顺序是以<strong>开括号</strong>出现顺序为准。</p> <p><code>$1</code>指的是一个整体</p> <p><code>$2</code>指的是年</p> <p><code>$3</code>指的是月</p> <p><code>$4</code>指的是日</p> <p>按照<code>(</code>的顺序进行编组</p> <h6>大小写转换</h6> <p>在Idea、VS Code、Sublime、Notepad++等工具进行替换操作时,还可以使用下表中操作符进行大小写转换</p> <table> <thead> <tr> <th align="left">操作符</th> <th align="left">描述</th> </tr> </thead> <tbody> <tr> <td align="left">\u 单个转大写</td> <td align="left">转换下一个字符为<strong>大</strong>写</td> </tr> <tr> <td align="left">\U 全部转大写</td> <td align="left">转换<code>\U</code>后所有字符转<strong>大</strong>写</td> </tr> <tr> <td align="left">\U…\E 区间转大写</td> <td align="left"><code>\U</code>与<code>\E</code>区间的内容转<strong>大</strong>写</td> </tr> <tr> <td align="left">\l 单个转小写</td> <td align="left">转换一下个字符为小写</td> </tr> <tr> <td align="left">\L 全部转小写</td> <td align="left">转换<code>\L</code>后所有字符转小写</td> </tr> <tr> <td align="left">\L…\E 区间转小写</td> <td align="left"><code>\L</code>与<code>\U</code>区间的内容转小写</td> </tr> </tbody> </table> <p><a href="http://img.e-com-net.com/image/info8/9eba53d195e64afda6683c233faf10bb.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9eba53d195e64afda6683c233faf10bb.jpg" alt="正则表达式_第29张图片" width="650" height="103" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/058a8eaa8bd54be7b8076cc2c1b8365a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/058a8eaa8bd54be7b8076cc2c1b8365a.jpg" alt="在这里插入图片描述" width="650" height="99"></a></p> <h4>边界断言</h4> <h5>介绍</h5> <p>是边界断言让正则表达式有了<strong>条件</strong>判断的能力</p> <p>先来看个栗子感受一下</p> <p>匹配所以姓名,不能带着表头中的姓名</p> <p>测试数据</p> <pre><code class="prism language-bash">姓名 生日 年龄 性别 芝麻 <span class="token number">2001</span>/05/22 <span class="token number">19</span>岁 男 章一 <span class="token number">1993</span>-08-09 <span class="token number">20</span>岁 女 沈家怡 <span class="token number">1999.05</span>.22 <span class="token number">21</span>岁 女 陆力丹 <span class="token number">1989</span>-02-19 <span class="token number">19</span>岁 男 王子怡 <span class="token number">2002</span>-12-15 <span class="token number">19</span>岁 男 </code></pre> <p><a href="http://img.e-com-net.com/image/info8/612d394ffd6a4c2f9bf3b8cd5a237d67.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/612d394ffd6a4c2f9bf3b8cd5a237d67.jpg" alt="正则表达式_第30张图片" width="650" height="194" style="border:1px solid black;"></a></p> <p>这里面的<code>(?!)</code>就是前置否定断言</p> <p>在断言这里,网上的,视频的教程对其的称呼真的是层出不穷,</p> <table> <thead> <tr> <th align="left">表达式</th> <th align="left">环视</th> <th align="left">预查</th> <th align="left">边界断言</th> <th align="left">零宽断言</th> </tr> </thead> <tbody> <tr> <td align="left"><code>(?= )</code></td> <td align="left">向前肯定环视</td> <td align="left">正向肯定预查</td> <td align="left">边界前置肯定断言</td> <td align="left">零宽度正预测先行断言</td> </tr> <tr> <td align="left"><code>(?! )</code></td> <td align="left">向前否定环视</td> <td align="left">正向否定预查</td> <td align="left">边界前置否定断言</td> <td align="left">零宽度负预测先行断言</td> </tr> <tr> <td align="left"><code>(?<= )</code></td> <td align="left">向后肯定环视</td> <td align="left">反向肯定预查</td> <td align="left">边界后置肯定断言</td> <td align="left">零宽度正回顾后发断言</td> </tr> <tr> <td align="left"><code>(?<! )</code></td> <td align="left">向后否定环视</td> <td align="left">反向否定预查</td> <td align="left">边界后置否定断言</td> <td align="left">零宽度负回顾后发断言</td> </tr> </tbody> </table> <p>管他叫什么呢,反正我们只要知道它是断言,然后怎么使用就行了</p> <p>这里只需要四组图就可以记住这四个断言的作用了</p> <p><a href="http://img.e-com-net.com/image/info8/c7314cd0494340659ae130b3fe74eb48.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c7314cd0494340659ae130b3fe74eb48.jpg" alt="正则表达式_第31张图片" width="650" height="184" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/f348c5b3a21342f88431ec78ae972715.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f348c5b3a21342f88431ec78ae972715.jpg" alt="正则表达式_第32张图片" width="650" height="183" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/6d0239dfaa6745f49a5b864c9914de91.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6d0239dfaa6745f49a5b864c9914de91.jpg" alt="正则表达式_第33张图片" width="650" height="183" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/fcd89ce15a574b749eb28a3002bbc1ab.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/fcd89ce15a574b749eb28a3002bbc1ab.jpg" alt="正则表达式_第34张图片" width="650" height="192" style="border:1px solid black;"></a></p> <p><code>(?=芝)</code>就是芝前面的那个地方</p> <p><code>(?!芝)</code>就是除了芝前面地方的其他所有地方</p> <p><code>(?=芝)</code>就是芝后面的那个地方</p> <p><code>(?!芝)</code>就是除了芝后面地方的其他所有地方</p> <p>虽然案例很简陋,但是只要理解了这四句话,边界断言就轻轻松松拿下</p> <h5>匹配错误的十六进制颜色</h5> <p>测试数据如下</p> <p>正确的16进制颜色规则</p> <p>1、#开头</p> <p>2、6个16进制数字或者3个</p> <pre><code class="prism language-bash"><span class="token comment">#BC0D13</span> <span class="token comment">#a3e32d</span> <span class="token comment">#a656e3</span> <span class="token comment">#e00</span> <span class="token comment">#91e376</span> <span class="token comment">#as</span> sdas<span class="token comment">#</span> <span class="token comment">#14e3ce</span> </code></pre> <p><a href="http://img.e-com-net.com/image/info8/2da274c1b7fb40fb98d73cae58bd3e15.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2da274c1b7fb40fb98d73cae58bd3e15.jpg" alt="正则表达式_第35张图片" width="650" height="220" style="border:1px solid black;"></a></p> <p>实现这种题目的步骤就是</p> <p>先找到符合要求的16进制颜色</p> <p>然后使用向前否定环视</p> <p>即可找到不符合要求的16进制颜色</p> <h5>找出所有符合条件的密码</h5> <ol> <li>密码长度是8-20位</li> <li>大小写字母以及数字必须都有一个。</li> </ol> <p>测试数据</p> <pre><code class="prism language-bash">e3c3d2D3223 86e374W2 e3a34fDas 213498h9 4DIOJ239830239ur23u90asdasasd 5fe362IKds 2ab93F bf45bbaSd9 </code></pre> <p><a href="http://img.e-com-net.com/image/info8/8ca8a2d3440d4cf19cfc13846b912293.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8ca8a2d3440d4cf19cfc13846b912293.jpg" alt="正则表达式_第36张图片" width="650" height="210" style="border:1px solid black;"></a></p> <h5>提取JavaScript中的合法变量名</h5> <p>测试数据</p> <pre><code class="prism language-js"><span class="token keyword">const</span> http <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'http'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> fs <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> path <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'path'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> 1server <span class="token operator">=</span> http<span class="token punctuation">.</span><span class="token function">createServer</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> server<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'request'</span><span class="token punctuation">,</span><span class="token punctuation">(</span><span class="token parameter">req<span class="token punctuation">,</span>resp</span><span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> <span class="token keyword">var</span> url <span class="token operator">=</span> req<span class="token punctuation">.</span>url<span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span>url<span class="token operator">===</span><span class="token string">'/favicon.ico'</span><span class="token punctuation">)</span><span class="token punctuation">{</span> resp<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> resp<span class="token punctuation">.</span><span class="token function">setHeader</span><span class="token punctuation">(</span><span class="token string">'Content-type'</span><span class="token punctuation">,</span><span class="token string">'text/html;charset=utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">访问的网址的</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>url<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">,访问方法是</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>req<span class="token punctuation">.</span>method<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> _data <span class="token operator">=</span> fs<span class="token punctuation">.</span><span class="token function">readFileSync</span><span class="token punctuation">(</span>path<span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span>__dirname<span class="token punctuation">,</span>url<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> resp<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> server<span class="token punctuation">.</span><span class="token function">listen</span><span class="token punctuation">(</span><span class="token string">'80'</span><span class="token punctuation">,</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">=></span><span class="token punctuation">{</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'服务启动成功,80端口'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> </code></pre> <p><a href="http://img.e-com-net.com/image/info8/38bb454ac5fd41b6986935154b04fb27.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/38bb454ac5fd41b6986935154b04fb27.jpg" alt="正则表达式_第37张图片" width="650" height="390" style="border:1px solid black;"></a></p> <h5>添加千分号</h5> <p>每三位加入一个<code>,</code>做分割</p> <p>测试数据</p> <pre><code class="prism language-bash"><span class="token number">12349978</span> <span class="token number">13241230981240941270</span> <span class="token number">4912771</span> <span class="token number">240912470</span> <span class="token number">143874131299</span> <span class="token number">329087234</span> <span class="token number">51972</span> </code></pre> <p><a href="http://img.e-com-net.com/image/info8/e8ec92b922094e43bed4061a1b1b703d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/e8ec92b922094e43bed4061a1b1b703d.jpg" alt="正则表达式_第38张图片" width="650" height="525" style="border:1px solid black;"></a></p> <h3>JAVA中的正则</h3> <p><code>java.util.regex </code>是一个用正则表达式所定制的模式来对字符串进行匹配工作的类库包</p> <p>它主要包括两个类:<code>Pattern</code> 和 <code>Matcher</code> 。</p> <ul> <li>Pattern: <strong>一个 Pattern 是一个正则表达式经编译后的表现模式。</strong></li> <li>Matcher:<strong>一个 Matcher 对象是一个状态机器,它依据 Pattern 对象做为匹配模式对字符串展开匹配检查。</strong></li> </ul> <p>首先一个 <code>Pattern</code> 实例定制了一个所用语法与 <code>PERL</code> 类似的正则表达式经编译后的模式</p> <p>然后一个 <code>Matcher</code> 实例在这个给定的 <code>Pattern</code> 实例的模式控制下进行字符串匹配后的后续工作,比如替换啊</p> <h5>Pattern</h5> <p>Pattern 的主要方法如下</p> <table> <thead> <tr> <th>方法名称</th> <th>解释</th> </tr> </thead> <tbody> <tr> <td>static Pattern compile(String regex)</td> <td>将给定的正则表达式编译并赋予给 <code>Pattern</code> 类</td> </tr> <tr> <td>static Pattern compile(String regex, int flags)</td> <td>对指定字符串的截取,参数配置如下</td> </tr> <tr> <td>int flags()</td> <td>返回当前 <code>Pattern</code> 的匹配 <code>flag</code> 参数</td> </tr> <tr> <td>Matcher matcher(CharSequence input)</td> <td>生成一个给定命名的 <code>Matcher</code> 对象</td> </tr> <tr> <td>static boolean matches(String regex, CharSequence input)</td> <td>编译给定的正则表达式并对输入的字串以该正则表达式为模开展匹配</td> </tr> <tr> <td>String pattern()</td> <td>返回该Patter对象所编译的正则表达式</td> </tr> </tbody> </table> <p>一个正则表达式,也就是一串有特定意义的字符</p> <p>可以首先要编译成为一个 <code>Pattern</code> 类的实例</p> <p>这个 <code>Pattern</code> 对象可以使用 <code>matcher(String str)</code> 方法来生成一个 <code>Matcher</code> 实例</p> <p>接着便可以使用该 <code>Matcher</code> 实例对目标字符串进行匹配后的后续工作</p> <p>现在我们先来看一个简单的例子</p> <pre><code class="prism language-java"><span class="token comment">// 生成一个 Pattern,同时编译一个正则表达式</span> <span class="token class-name">Pattern</span> p <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span><span class="token string">"[/\\]+"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//用 Pattern 的 split() 方法把字符串按 "/" 和 "\"分割</span> <span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> result <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span> <span class="token string">"Kevin has seen《LEON》seveal times,because it is a good film."</span> <span class="token operator">+</span><span class="token string">"/ 凯文已经看过《这个杀手不太冷》几次了\因为它是一部"</span> <span class="token operator">+</span><span class="token string">"好电影。/名词:凯文。"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> result<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>result<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <blockquote> <p>上述代码的运行结果为:</p> <p>Kevin has seen《LEON》seveal times,because it is a good film.<br> 凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。<br> 名词:凯文。</p> </blockquote> <h5>Matcher</h5> <p><code>Matcher</code> 对象是一个状态机器,它<strong>依据 Pattern 对象做为匹配模式对字符串展开匹配检查</strong>。</p> <blockquote> <p>例:下面是一个对单词 <code>dog</code> 出现在输入字符串中出现次数进行计数的例子:</p> </blockquote> <pre><code class="prism language-java"><span class="token class-name">String</span> regex <span class="token operator">=</span> <span class="token string">"\\bdog\\b"</span><span class="token punctuation">;</span> <span class="token class-name">String</span> input <span class="token operator">=</span> <span class="token string">"dog dog dogtie"</span><span class="token punctuation">;</span> <span class="token class-name">Pattern</span> p <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span>regex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">Matcher</span> m <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>input<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 获取 matcher 对象</span> <span class="token keyword">int</span> count <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>m<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> count<span class="token operator">++</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"Match number "</span> <span class="token operator">+</span> count<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"start(): "</span> <span class="token operator">+</span> m<span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"end(): "</span> <span class="token operator">+</span> m<span class="token punctuation">.</span><span class="token function">end</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <blockquote> <p>上述代码的执行结果为:</p> <p>Match number 1 // 第一次出现 (下标 0-2)<br> start(): 0 // 开始下标 0<br> end(): 3 // 结束下标 3<br> Match number 2 // 第二次出现(下标 4-6)<br> start(): 4 // 开始下标 4<br> end(): 7 // 结束下标 7</p> </blockquote> <p><code>dogtie</code>中的dog没有被匹配是因为我们要的是单独的单词<code>dog</code>而不是在其他单词中的<code>dog</code></p> <blockquote> <p><code>matches</code> 和 <code>lookingAt</code></p> </blockquote> <p>这两个方法都用来尝试匹配一个输入序列模式。</p> <p>它们的不同是 <code>matches</code> 要求整个序列都匹配</p> <p>而<code>lookingAt</code> 方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。</p> <pre><code class="prism language-java"><span class="token class-name">String</span> regex <span class="token operator">=</span> <span class="token string">"foo"</span><span class="token punctuation">;</span> <span class="token class-name">String</span> input <span class="token operator">=</span> <span class="token string">"fooooooooooooooooo"</span><span class="token punctuation">;</span> <span class="token class-name">String</span> input2 <span class="token operator">=</span> <span class="token string">"ooooofoooooooooooo"</span><span class="token punctuation">;</span> <span class="token class-name">Pattern</span> pattern <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span>regex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">Matcher</span> matcher <span class="token operator">=</span> pattern<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>input<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">Matcher</span> matcher2 <span class="token operator">=</span> pattern<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>input2<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"lookingAt(): "</span> <span class="token operator">+</span> matcher<span class="token punctuation">.</span><span class="token function">lookingAt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"matches(): "</span> <span class="token operator">+</span> matcher<span class="token punctuation">.</span><span class="token function">matches</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"lookingAt(): "</span> <span class="token operator">+</span> matcher2<span class="token punctuation">.</span><span class="token function">lookingAt</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <blockquote> <p>上述代码的执行结果为:</p> <p>lookingAt(): true<br> matches(): false<br> lookingAt(): false</p> </blockquote> <blockquote> <p><code>replaceFirst</code> 和 <code>replaceAll</code></p> </blockquote> <p>这两个方法用来替换匹配正则表达式的文本。</p> <p>不同的是,<code>replaceFirst</code> 只会替换第一次匹配</p> <p><code>replaceAll</code> 替换所有匹配。</p> <blockquote> <p>下面的例子来解释这个功能:</p> </blockquote> <pre><code class="prism language-java"><span class="token class-name">String</span> regex <span class="token operator">=</span> <span class="token string">"dog"</span><span class="token punctuation">;</span> <span class="token class-name">String</span> input1 <span class="token operator">=</span> <span class="token string">"The dog says meow. All dogs say meow."</span><span class="token punctuation">;</span> <span class="token class-name">String</span> input2 <span class="token operator">=</span> <span class="token string">"The dog says meow. All dogs say meow."</span><span class="token punctuation">;</span> <span class="token class-name">String</span> replace <span class="token operator">=</span> <span class="token string">"cat"</span><span class="token punctuation">;</span> <span class="token class-name">Pattern</span> p <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span>regex<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">Matcher</span> m1 <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>input1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">Matcher</span> m2 <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>input2<span class="token punctuation">)</span><span class="token punctuation">;</span> input1 <span class="token operator">=</span> m1<span class="token punctuation">.</span><span class="token function">replaceAll</span><span class="token punctuation">(</span>replace<span class="token punctuation">)</span><span class="token punctuation">;</span> input2 <span class="token operator">=</span> m2<span class="token punctuation">.</span><span class="token function">replaceFirst</span><span class="token punctuation">(</span>replace<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>input1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>input2<span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <blockquote> <p>上述代码的执行结果为:</p> <p>The cat says meow. All cats say meow.<br> The cat says meow. All dogs say meow.</p> </blockquote> <p>从上面的结果,我们可以发现,<code>replaceFirst</code> 方法只将第一个 <code>dog</code> 替换成了 <code>cat</code>。而 <code>replaceAll</code> 方法却将两个 <code>dog</code> 都替换成了 <code>cat</code>。</p> <p>好啦,结束了</p> <p>正则差不多就这些内容了</p> <p>如果你发现了错误</p> <p>望留言批评指正!</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1735851834578362368"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(正则表达式,正则表达式)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835399831535841280.htm" title="python实现规则引擎_规则引擎python" target="_blank">python实现规则引擎_规则引擎python</a> <span class="text-muted">weixin_39601511</span> <a class="tag" taget="_blank" href="/search/python%E5%AE%9E%E7%8E%B0%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/1.htm">python实现规则引擎</a> <div>广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!我正在用python编写日志收集分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。它需要具有以下特点:正则表达式匹配消息本身消息严重性优先级的算术比较布尔运算符我设想一个例子规则可能是这样的:(message~program:messageandseverity>=h</div> </li> <li><a href="/article/1835392896531001344.htm" title="Regular Expression 正则表达式" target="_blank">Regular Expression 正则表达式</a> <span class="text-muted">Aimyon_36</span> <a class="tag" taget="_blank" href="/search/Data/1.htm">Data</a><a class="tag" taget="_blank" href="/search/Development/1.htm">Development</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>RegularExpression前言1.基本匹配2.元字符2.1点运算符.2.2字符集2.2.1否定字符集2.3重复次数2.3.1*号2.3.2+号2.3.3?号2.4{}号2.5(...)特征标群2.6|或运算符2.7转码特殊字符2.8锚点2.8.1^号2.8.2$号3.简写字符集4.零宽度断言(前后预查)4.1?=...正先行断言4.2?!...负先行断言4.3?Thefatcatsaton</div> </li> <li><a href="/article/1835359727924637696.htm" title="Nginx从入门到实践(三)" target="_blank">Nginx从入门到实践(三)</a> <span class="text-muted">听你讲故事啊</span> <div>动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin</div> </li> <li><a href="/article/1835333268375957504.htm" title="爬虫技术抓取网站数据" target="_blank">爬虫技术抓取网站数据</a> <span class="text-muted">Bearjumpingcandy</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>爬虫技术是一种自动化获取网站数据的技术,它可以模拟人类浏览器的行为,访问网页并提取所需的信息。以下是爬虫技术抓取网站数据的一般步骤:发起HTTP请求:爬虫首先会发送HTTP请求到目标网站,获取网页的内容。解析HTML:获取到网页内容后,爬虫会使用HTML解析器解析HTML代码,提取出需要的数据。数据提取:通过使用XPath、CSS选择器或正则表达式等工具,爬虫可以从HTML中提取出所需的数据,如文</div> </li> <li><a href="/article/1835129584400560128.htm" title="互联网 Java 工程师面试题(Java 面试题四)" target="_blank">互联网 Java 工程师面试题(Java 面试题四)</a> <span class="text-muted">苹果酱0567</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>下面列出这份Java面试问题列表包含的主题多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java集合框架数组字符串GOF设计模式SOLID抽象类与接口Java基础,如equals和hashcode泛型与枚举JavaIO与NIO常用网络协议Java中的数据结构和算法正则表达式JVM底层Java最佳实JDBCDate,Time与CalendarJava处理XMLJUnit编程现在是时候给</div> </li> <li><a href="/article/1835128954600648704.htm" title="【无标题】正则表达式笔记" target="_blank">【无标题】正则表达式笔记</a> <span class="text-muted">qis_qis</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>作用查找特殊规则的字符串编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。0\d{2,3}-\d{7,8}基本匹配区分大小写cat会匹配"cat"CAt会匹配"CAt"元字符元字符是正则表达式的基本组成元素。元字符在这里跟它通常表达的意思不一样,而是以某种特殊的含义去解释。有些</div> </li> <li><a href="/article/1835005152646492160.htm" title="python学习第七节:正则表达式" target="_blank">python学习第七节:正则表达式</a> <span class="text-muted">一只会敲代码的小灰灰</span> <a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>python学习第七节:正则表达式正则表达式基本上在所有开发语言中都会使用到,在python中尤为重要。当我们使用python开发爬虫程序将目标网页扒下来之后我们要从网页中解析出我们想要的信息,这个时候就需要正则表达式去进行匹配。importrere的常量re模块中有9个常量,常量的值都是int类型!(知道就行)修饰符描述re.l使匹配对大小写不敏感re.L做本地化识别(locale-aware)</div> </li> <li><a href="/article/1834800668481777664.htm" title="Linux三剑客之grep命令详解" target="_blank">Linux三剑客之grep命令详解</a> <span class="text-muted">promise524</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>grep是Linux中最常用的文本搜索工具,用于在文件或文本输出中查找与指定模式匹配的行。它支持基本正则表达式、扩展正则表达式、多文件搜索、递归搜索等多种功能,非常适合过滤、搜索和提取文本内容。1.grep的基本语法grep[选项]模式[文件...]模式:搜索的文本模式,可以是普通字符串或正则表达式。[文件...]:要搜索的文件。如果没有指定文件,grep会从标准输入中读取数据。2.常用选项-i:</div> </li> <li><a href="/article/1834684045783560192.htm" title="Linux三剑客与管道使用" target="_blank">Linux三剑客与管道使用</a> <span class="text-muted">许琳珊</span> <div>一、管道1、什么是管道linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入2、例子echo"hello123"|grep"hello"二、正则1、什么是正则正则表达式就是记录文本规则的代码2、正则的用法常用元字符代码说明.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配字符串的开始$匹配字</div> </li> <li><a href="/article/1834620652624113664.htm" title="Java 正则表达式详解" target="_blank">Java 正则表达式详解</a> <span class="text-muted">艾伦~耶格尔</span> <a class="tag" taget="_blank" href="/search/Java%E5%88%9D%E7%BA%A7/1.htm">Java初级</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>正则表达式(RegularExpression,简称regex)是一种强大的文本处理工具,可以用来匹配、搜索和替换文本中的特定模式。在Java中,正则表达式由java.util.regex包提供支持。1.理解正则表达式语法正则表达式使用特殊的字符和符号来定义匹配模式。一些常用的元字符如下:.:匹配任意单个字符*:匹配前面的字符零次或多次+:匹配前面的字符一次或多次?:匹配前面的字符零次或一次[]:</div> </li> <li><a href="/article/1834545036784660480.htm" title="Linux三剑客-sed" target="_blank">Linux三剑客-sed</a> <span class="text-muted">krb___</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>前言:sed是StreamEditor(字符流)的缩写,简称流编辑器。sed是操作、过滤和转换问吧内容的强大工具。sed是一次读取一行数据常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)sed命令语法:sed[选项][sed内置命令字符][输入文件]选项参数解释-n取消默认sed的输出,常与sed内置命令p一起使用-i直</div> </li> <li><a href="/article/1834462469813268480.htm" title="Python基础知识进阶之正则表达式_头歌python正则表达式进阶" target="_blank">Python基础知识进阶之正则表达式_头歌python正则表达式进阶</a> <span class="text-muted">前端陈萨龙</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>最后硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是</div> </li> <li><a href="/article/1834429709887303680.htm" title="Java中的数组和字符串" target="_blank">Java中的数组和字符串</a> <span class="text-muted">RenX000</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/SE/1.htm">SE</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>文章目录数组一维数组创立默认值转型多维数组可变长参数基本格式应用字符串String类StringBuilder类裁剪正则表达式检测数组数组类型本身也是类,即使是基本类型的数组也是以对象形式存在的,并不是基本数据类型一维数组int[]array=newint[10];//创建数组时需要指定长度创立类型[]变量名称=new类型[数组大小];类型变量名称[]=new类型[数组大小];//支持C语言样式,</div> </li> <li><a href="/article/1834247285219880960.htm" title="Linux如何使用sed命令进行文本替换" target="_blank">Linux如何使用sed命令进行文本替换</a> <span class="text-muted">yang295242361</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>在Linux中,sed(StreamEditor)是一个用于处理文本流的命令行工具,它非常适合用于执行基本的文本转换。sed可以读取输入的文本文件,根据指定的指令对文本进行处理,并将结果输出到标准输出设备。以下是如何使用sed命令进行文本替换的详细说明:1.基本语法sed命令的基本语法如下:sed's/regexp/replacement/flags'fileregexp:正则表达式,用于匹配要替</div> </li> <li><a href="/article/1833992430127509504.htm" title="Linux 运维三剑客:grep、sed 和 awk 实战案例与命令参数详解" target="_blank">Linux 运维三剑客:grep、sed 和 awk 实战案例与命令参数详解</a> <span class="text-muted">Lyle_Tu</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97%E8%BF%90%E7%BB%B4/1.htm">云计算运维</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>在Linux运维中,grep、sed和awk是三个非常强大的文本处理工具,它们在处理文本数据时发挥着重要作用。本文将通过一些实战案例,展示这三个工具的使用方法和强大功能,并对它们的命令参数进行详解。grep:文本搜索利器grep是一个强大的文本搜索工具,它使用正则表达式来匹配文本模式。以下是grep的一些常用命令参数:-i:忽略大小写进行匹配。-v:反向查找,只打印不匹配的行。-n:显示匹配行的行</div> </li> <li><a href="/article/1833944197728661504.htm" title="python核心编程课后习题答案--第一章" target="_blank">python核心编程课后习题答案--第一章</a> <span class="text-muted">NewForMe</span> <div>正则表达式1-1[bh][aiu]t;1-2\w+\w+;1-3\w+,\s\w+;1-4[A-Za-z_]+[\w_]+python有效标识符的定义:1.python中的标识符是区分大小写的。2.标示符以字母或下划线开头,可包括字母,下划线和数字。3.以下划线开头的标识符是有特殊意义的。1-5\d+(\s\w+)+1-6(1)^w{3}://.+com/?$(2)^\w+://.+?\.\w{3</div> </li> <li><a href="/article/1833725811115520000.htm" title="Java 正则表达式" target="_blank">Java 正则表达式</a> <span class="text-muted">南风_001</span> <div>正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如HelloWorld正则表达式匹配"HelloWorld"字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a"或"1"。下表列出了一些正则表达式的实例及描述:正则表达式描述thisistext匹配</div> </li> <li><a href="/article/1833661088093270016.htm" title="Linux shell sed 命令详解" target="_blank">Linux shell sed 命令详解</a> <span class="text-muted">BugBear1989</span> <div>详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761一、sed命令工作机制:每次读取一行文本至“模式空间(patternspace)”中,在模式空间中完成处理;将处理结果输出至标准输出设备;语法:sed[OPTION]...{script}[input-file]...参数说明-r支持扩展正则表达式-n静默模式-escript1-e</div> </li> <li><a href="/article/1833623023924637696.htm" title="用正则表达式过滤logcat中的多个tag的日志" target="_blank">用正则表达式过滤logcat中的多个tag的日志</a> <span class="text-muted">fc82bb084ee7</span> <div>在AndroidStudio中,在过滤器的byLogTag选项中配置.我配置了2个tagfilter方便开发,1.multi-tag-filter2.ignore-multi-tag-filter.过滤出指定tag的日志信息^(?:Watchdog|InputReader|ahking)Watchdog忽略指定tag的日志信息^(?!WifiMonitor|WifiHW)有些tag的无用log非常</div> </li> <li><a href="/article/1833566150668152832.htm" title="Python实现对哈利波特小说单词统计" target="_blank">Python实现对哈利波特小说单词统计</a> <span class="text-muted">胜天半月子</span> <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E5%8F%8A%E5%BA%94%E7%94%A8/1.htm">Python基础及应用</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%A1%A8/1.htm">列表</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>文章目录要求一、打开文件正则表达式spilt()函数实例二、词频统计三、单词排序四、输出或写入文件python文件写入要求对HarryPotter5.txt英文小说进行词频统计,统计出前二十个频率最高的单词,并打印输出或写入文件一、打开文件打开文件并将单词中非单词字符用空格代替代码:#读取小说内容fp=open('HarryPotter5.txt')content=fp.read()#所有标点符号</div> </li> <li><a href="/article/1833420650069454848.htm" title="javase笔记3----正则表达式" target="_blank">javase笔记3----正则表达式</a> <span class="text-muted">芝奥小婷</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>正则表达式简介正则表达式(RegularExpressions),是一个特殊的字符串,可以对普通的字符串进行校验检测等工作,校验一个字符串是否满足预设的规则。基本语法字符集合[]:表示匹配括号里的任意一个字符。[abc]:匹配a或者b或者c[^abc]:匹配任意一个字符,只要不是a,或b,或c就表示匹配成功[a-z]:表示匹配所有的小写字母的任意一个。[A-Za-z]:表示匹配所有的小写字母和大写</div> </li> <li><a href="/article/1833420522726191104.htm" title="搜索结果关键字标红 — 正则" target="_blank">搜索结果关键字标红 — 正则</a> <span class="text-muted">月亮消失了.974</span> <a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>str是你的内容,key是关键字正则表达式匹配模式支持的三个标志(newregexp的第二个参数)g:global全文搜索,不添加则搜索到第一个匹配停止;i:ignorecase忽略大小写,默认大小写敏感;m:multiplelines多行搜索highlight(str,key){            varreg=newRegExp(`(${key})`,'gi');            v</div> </li> <li><a href="/article/1833419514369372160.htm" title="正则表达式语法、运算符优先级" target="_blank">正则表达式语法、运算符优先级</a> <span class="text-muted">weixin_54668000</span> <a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配runoob、runooob、runoooooob</div> </li> <li><a href="/article/1833400605431918592.htm" title="shell脚本——正则表达式" target="_blank">shell脚本——正则表达式</a> <span class="text-muted">诚诚k</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>概述正则表达式是你所定义的模式模板,Linux工具可以用它来过滤文本。Linux工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配模式,它就会被滤掉。数据流--正则表达式---(1)匹配的数据(2)滤掉的数据正则表达式(或称RegularExpression,简称RE),是用于描述字符排列和匹配模式的一</div> </li> <li><a href="/article/1833399218337837056.htm" title="正则表达式-运算符优先级" target="_blank">正则表达式-运算符优先级</a> <span class="text-muted">一只小棉花</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F-%E4%BC%98%E5%85%88%E7%BA%A7/1.htm">正则表达式-优先级</a> <div>转自:http://www.runoob.com/regexp/regexp-operator.html</div> </li> <li><a href="/article/1833142023012577280.htm" title="【Python】正则表达式" target="_blank">【Python】正则表达式</a> <span class="text-muted">丕羽</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>正则表达式正则表达式,全称是RegularExpression,正则表达式,即:正确的,符合特定规则的式子.用来校验和匹配数据,正则不独属于任意的一门语言,Java,Python…都支持,且:正则规则都是一样的,不同的是写法不一样.python中正则使用步骤:#1.导包importre#2.正则校验.re.match()re.search()re.compile().sub()#3.获取匹配结果.</div> </li> <li><a href="/article/1833092236439547904.htm" title="re模块" target="_blank">re模块</a> <span class="text-muted">匿隱</span> <div>defmain():""""""#1.compile(正则表达式)->将正则表达式转换成正则对象"""编译后可以直接通过对象调用相关的对象方法"""re_object=re.compile(r'\d{3}')re_object.fullmatch('432')#2.fullmatch(正则表达式,字符串)->让字符串和正则表达式完全匹配,匹配成功返回匹配对象,匹配失败返回None"""应用:检测字</div> </li> <li><a href="/article/1832979887732912128.htm" title="Python 标准库" target="_blank">Python 标准库</a> <span class="text-muted">一马归一码</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>目录1.一些常见的标准库:2.os模块的导入和使用3.re模块的导入与调用4.math模块的导入与调用5.datetime模块的导入与调用标准库:Python本身带着的一些标准的模块库,这些模块被直接构建在解析器里,虽然不是语言内置的功能,但可以高效地调用,甚至是系统级调用也可以。1.一些常见的标准库:os模块:提供了很多与操作系统相关联的函数re模块:为高级字符串处理提供了正则表达式工具,对于复</div> </li> <li><a href="/article/1832891142165852160.htm" title="正则表达式" target="_blank">正则表达式</a> <span class="text-muted">他@</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>一:正则表达式grep-a不要忽略二进制数据。-A除了显示符合范本样式的那一行之外,并显示该行之后的内容。-b在显示符合范本样式的那一行之外,并显示该行之前的内容。-c计算符合范本样式的列数。-C或-除了显示符合范本样式的那一列之外,并显示该列之前后的内容。-d当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-e指定字符串作为查找文件内容的范本样式。-E将范</div> </li> <li><a href="/article/1832832007428730880.htm" title="14.JS-正则表达式的反向引用" target="_blank">14.JS-正则表达式的反向引用</a> <span class="text-muted">WahFung_</span> <a class="tag" taget="_blank" href="/search/js%E7%AC%94%E8%AE%B0/1.htm">js笔记</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>选择字符:|com|cn|edu---选择其中一个(含有其中一个就能匹配成功)子表达式:用()包围的就是子表达式str="((/d)(/w))"第一个子表达式:((\d)(\w))第二个子表达式:(\d)第三个子表达式:(\w)子表达式:以第一个出现的(为第一个表达式捕获:将匹配到的子表达式保存在RegExp对象中RegExp.$1:保存第一个子表达式RegExp.$2:保存第二个子表达式RegE</div> </li> <li><a href="/article/92.htm" title="log4j对象改变日志级别" target="_blank">log4j对象改变日志级别</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a><a class="tag" taget="_blank" href="/search/level/1.htm">level</a><a class="tag" taget="_blank" href="/search/log4j%E5%AF%B9%E8%B1%A1%E5%90%8D%E7%A7%B0/1.htm">log4j对象名称</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB/1.htm">日志级别</a> <div>log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。 log4j配置文件: log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION #log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE=org.apache.l</div> </li> <li><a href="/article/219.htm" title="elk+redis 搭建nginx日志分析平台" target="_blank">elk+redis 搭建nginx日志分析平台</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/kibana/1.htm">kibana</a><a class="tag" taget="_blank" href="/search/logstash/1.htm">logstash</a> <div>             elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l</div> </li> <li><a href="/article/346.htm" title="Yii2设置时区" target="_blank">Yii2设置时区</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/timezone/1.htm">timezone</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较</div> </li> <li><a href="/article/473.htm" title="js实现前台动态添加文本框,后台获取文本框内容" target="_blank">js实现前台动态添加文本框,后台获取文本框内容</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E6%A1%86/1.htm">文本框</a> <div> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w</div> </li> <li><a href="/article/600.htm" title="持续集成工具" target="_blank">持续集成工具</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a> <div>        持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?...        持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行</div> </li> <li><a href="/article/727.htm" title="数据结构哈希表(hash)总结" target="_blank">数据结构哈希表(hash)总结</a> <span class="text-muted">永夜-极光</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>1.什么是hash 来源于百度百科: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。   </div> </li> <li><a href="/article/854.htm" title="乱七八糟" target="_blank">乱七八糟</a> <span class="text-muted">程序员是怎么炼成的</span> <div>eclipse中的jvm字节码查看插件地址: http://andrei.gmxhome.de/eclipse/ 安装该地址的outline 插件  后重启,打开window下的view下的bytecode视图 http://andrei.gmxhome.de/eclipse/   jvm博客: http://yunshen0909.iteye.com/blog/2</div> </li> <li><a href="/article/981.htm" title="职场人伤害了“上司” 怎样弥补" target="_blank">职场人伤害了“上司” 怎样弥补</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA/1.htm">职场</a> <div> 由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢?   在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议:   一、利用一些轻松的场合表示对他的尊重   即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,</div> </li> <li><a href="/article/1108.htm" title="深入浅出url编码" target="_blank">深入浅出url编码</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a> <div>出处:http://blog.csdn.net/yzhz  杨争   http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx 一、问题:         编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的</div> </li> <li><a href="/article/1235.htm" title="建表后创建表的约束关系和增加表的字段" target="_blank">建表后创建表的约束关系和增加表的字段</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%9A%84%E7%BA%A6%E6%9D%9F%E5%85%B3%E7%B3%BB/1.htm">标的约束关系</a><a class="tag" taget="_blank" href="/search/%E5%A2%9E%E5%8A%A0%E8%A1%A8%E7%9A%84%E5%AD%97%E6%AE%B5/1.htm">增加表的字段</a> <div>  下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式   1,增加字段(student表中增加 姓名字段)   alter table 增加字段的表名 add 增加的字段名 增加字段的数据类型 alter table student add name varchar2(10);   &nb</div> </li> <li><a href="/article/1362.htm" title="Uploadify 3.2 参数属性、事件、方法函数详解" target="_blank">Uploadify 3.2 参数属性、事件、方法函数详解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/uploadify/1.htm">uploadify</a> <div>一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。 buttonClass ” 按钮样式 buttonCursor ‘hand’ 鼠标指针悬停在按钮上的样子 buttonImage null 浏览按钮的图片的路</div> </li> <li><a href="/article/1489.htm" title="精通Oracle10编程SQL(16)使用LOB对象" target="_blank">精通Oracle10编程SQL(16)使用LOB对象</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *使用LOB对象 */ --LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节 --CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针 /* *综合实例 */ --建立表空间 --#指定区尺寸为128k,如不指定,区尺寸默认为64k CR</div> </li> <li><a href="/article/1616.htm" title="【Resin一】Resin服务器部署web应用" target="_blank">【Resin一】Resin服务器部署web应用</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/resin/1.htm">resin</a> <div>工作中,在Resin服务器上部署web应用,通常有如下三种方式:   配置多个web-app 配置多个http id 为每个应用配置一个propeties、xml以及sh脚本文件 配置多个web-app   在resin.xml中,可以为一个host配置多个web-app   <cluster id="app&q</div> </li> <li><a href="/article/1743.htm" title="red5简介及基础知识" target="_blank">red5简介及基础知识</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a> <div>  简介   Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正</div> </li> <li><a href="/article/1870.htm" title="angular.fromJson" target="_blank">angular.fromJson</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+%E5%AE%98%E6%96%B9API/1.htm">AngularJS 官方API</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a> <div>angular.fromJson 描述: 把Json字符串转为对象 使用方法: angular.fromJson(json); 参数详解: Param Type Details json string JSON 字符串 返回值: 对象, 数组, 字符串 或者是一个数字 示例: <!DOCTYPE HTML> <h</div> </li> <li><a href="/article/1997.htm" title="java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I" target="_blank">java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class ReverseWords { /** * 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。 * 要求: * 1.实现速度最快,移动最少 * 2.不能使用String的方法如split,indexOf等等。 * 解答:两次翻转。 */ publ</div> </li> <li><a href="/article/2124.htm" title="web实时通讯" target="_blank">web实时通讯</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a> <div>关于web实时通讯,做一些监控软件。 由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路</div> </li> <li><a href="/article/2251.htm" title="[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?" target="_blank">[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a> <div>       大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思     如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢?   </div> </li> <li><a href="/article/2378.htm" title="oracle 外部表" target="_blank">oracle 外部表</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E9%83%A8%E8%A1%A8/1.htm">外部表</a><a class="tag" taget="_blank" href="/search/external+tables/1.htm">external tables</a> <div>    oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。 you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho</div> </li> <li><a href="/article/2505.htm" title="aop相关的概念及配置" target="_blank">aop相关的概念及配置</a> <span class="text-muted">daysinsun</span> <a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a> <div>切面(Aspect): 通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。 连接点(joinpoint) spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。 通知(Advice) 通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环</div> </li> <li><a href="/article/2632.htm" title="初一上学期难记忆单词背诵第二课" target="_blank">初一上学期难记忆单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>middle 中间的,中级的 well 喔,那么;好吧 phone 电话,电话机 policeman 警察 ask 问 take 拿到;带到 address 地址 glad 高兴的,乐意的 why 为什么  China 中国 family 家庭 grandmother (外)祖母 grandfather (外)祖父 wife 妻子 husband 丈夫 da</div> </li> <li><a href="/article/2759.htm" title="Linux日志分析常用命令" target="_blank">Linux日志分析常用命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/log/1.htm">log</a> <div>1.查看文件内容 cat -n 显示行号 2.分页显示 more Enter 显示下一行 空格 显示下一页 F 显示下一屏 B 显示上一屏 less /get 查询"get"字符串并高亮显示 3.显示文件尾 tail -f 不退出持续显示 -n 显示文件最后n行 4.显示头文件 head -n 显示文件开始n行 5.内容排序 sort -n 按照</div> </li> <li><a href="/article/2886.htm" title="JSONP 原理分析" target="_blank">JSONP 原理分析</a> <span class="text-muted">fantasy2005</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jsonp+%E8%B7%A8%E5%9F%9F/1.htm">jsonp 跨域</a> <div>转自 http://www.nowamagic.net/librarys/veda/detail/224 JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的</div> </li> <li><a href="/article/3013.htm" title="使用connect by进行级联查询" target="_blank">使用connect by进行级联查询</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2/1.htm">查询</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E5%AD%90/1.htm">父子</a><a class="tag" taget="_blank" href="/search/Connect+by/1.htm">Connect by</a><a class="tag" taget="_blank" href="/search/%E7%BA%A7%E8%81%94/1.htm">级联</a> <div>使用connect by进行级联查询          connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。          来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:</div> </li> <li><a href="/article/3140.htm" title="一个不错的能将HTML表格导出为excel,pdf等的jquery插件" target="_blank">一个不错的能将HTML表格导出为excel,pdf等的jquery插件</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/jquery%E6%8F%92%E4%BB%B6/1.htm">jquery插件</a> <div>发现一个老外写的不错的jquery插件,可以实现将HTML 表格导出为excel,pdf等格式, 地址在: https://github.com/kayalshri/ 下面看个例子,实现导出表格到excel,pdf <html> <head> <title>Export html table to excel an</div> </li> <li><a href="/article/3267.htm" title="UI设计中我们为什么需要设计动效" target="_blank">UI设计中我们为什么需要设计动效</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/UI%E8%AE%BE%E8%AE%A1/1.htm">UI设计</a> <div>关于Unity3D中的Shader的知识 首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,</div> </li> <li><a href="/article/3394.htm" title="如何禁止页面缓存" target="_blank">如何禁止页面缓存</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>禁止页面使用缓存~ ------------------------------------------------ jsp:页面no cache: response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cach</div> </li> <li><a href="/article/3521.htm" title="以代码的方式管理quartz定时任务的暂停、重启、删除、添加等" target="_blank">以代码的方式管理quartz定时任务的暂停、重启、删除、添加等</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86/1.htm">定时任务管理</a><a class="tag" taget="_blank" href="/search/spring-quartz/1.htm">spring-quartz</a> <div>      【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不</div> </li> <li><a href="/article/3648.htm" title="EXT实例" target="_blank">EXT实例</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a> <div>  (1) 增加一个按钮   JSP:   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); Stri</div> </li> <li><a href="/article/3775.htm" title="数学学习在计算机研究领域的作用和重要性" target="_blank">数学学习在计算机研究领域的作用和重要性</a> <span class="text-muted">xjnine</span> <a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a> <div>最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力.  无奈本人实在见地</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>