正则表达式

正则表达式

前言

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

正则表达式_第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/1950229418706268160.htm" title="密码正则验证:大小写字母、数字、特殊字符至少8位" target="_blank">密码正则验证:大小写字母、数字、特殊字符至少8位</a> <span class="text-muted">qq_21875331</span> <a class="tag" taget="_blank" href="/search/%E6%B8%90%E8%BF%9B%E5%BC%8F%E7%9A%84%E6%88%90%E9%95%BF/1.htm">渐进式的成长</a> <div>正则表达式:密码必须包含大写字母、数字、特殊字符(四种里至少三种,且至少8位)写法一:/((^(?=.*[a-z])(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^</div> </li> <li><a href="/article/1950071066281963520.htm" title="JavaScript正则表达式去除括号但保留内容与去除括号与内容" target="_blank">JavaScript正则表达式去除括号但保留内容与去除括号与内容</a> <span class="text-muted">Selicens</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</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>项目上碰到一个需求,是取多个递增文件的文件名,类似于test(1).txt、test(2).txt,但是不需要括号,只要test1、test2这种格式,最开始想到的办法就是js里的replace替换,先上一个比较笨但是也能实现效果的例子letname="test(1).txt"letdata=name.split('.')[0].replace('(','').replace(')','')con</div> </li> <li><a href="/article/1949934124164771840.htm" title="《剑指offer》-数据结构篇-哈希表/数组/矩阵/字符串" target="_blank">《剑指offer》-数据结构篇-哈希表/数组/矩阵/字符串</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%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%B8%8C%E8%A1%A8/1.htm">哈希表</a> <div>题目第一个只出现一次的字符数组中的重复的数字字符串流中第一个不重复的字符数组中只出现一次的数字调整数组顺序使奇数位于偶数前面数组中出现次数超过一半的数字把数组排成最小的数顺时针打印矩阵把字符串转换为整数表示数值的字符串左旋转字符串(矩阵翻转)替换空格正则表达式匹配代码实现第一个只出现一次的字符题目描述:在一个字符串(0len(numbers)/2:returnreselse:return0把数组排</div> </li> <li><a href="/article/1949928204164722688.htm" title="【通识】正则表达式" target="_blank">【通识】正则表达式</a> <span class="text-muted"></span> <div>1.正则表达式基本概念:正规表示/常规表示(RegularExpress)1)使用单个字符串描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器中,正则表达式通常被用来检索、替换符合某个模式的文本2)元字符和描述元字符描述\将下一个字符标记为特殊字符、或一个原义字符、或一个向后引用、或一个八进制等112.正则表达式的应用1111511</div> </li> <li><a href="/article/1949894026102632448.htm" title="正则表达式" target="_blank">正则表达式</a> <span class="text-muted">hui函数</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> <div>正则表达式Python中提供了多种解析网页数据的技术,正则表达式就是其中的一种,其他技术还包括:XPath、BeautifulSoup。什么是正则表达式正则表达式是一种文本模式,该模式描述了匹配字符串的规则,用于检索字符串中,是否有符合该模式的子串,或者对匹配到的子串进行替换。正则表达式的优点是功能强大,应用广泛,缺点是只适合匹配文本的字面意义,而不适合匹配文本意义。例如,正则表达式匹配嵌套了HT</div> </li> <li><a href="/article/1949855686779269120.htm" title="linux命令grep的实际应用" target="_blank">linux命令grep的实际应用</a> <span class="text-muted"></span> <div>grep是Linux/Unix系统中用于文本搜索的超级工具,其核心功能是使用正则表达式匹配文本行并输出结果。下面结合具体场景,展示其强大而实用的应用技巧:一、基础搜索与过滤快速定位文件内容:grep"error"/var/log/syslog#查找syslog中所有含"error"的行grep-i"timeout"application.log#-i忽略大小写,查找"timeout"统计匹配行数:</div> </li> <li><a href="/article/1949701105789235200.htm" title="文件改名软件Rename Pro:文件 / 目录混合改 批量改名 提升效率" target="_blank">文件改名软件Rename Pro:文件 / 目录混合改 批量改名 提升效率</a> <span class="text-muted"></span> <div>各位文件管理小能手们!今天给你们介绍一款超神的软件——RenamePro!它就像是文件改名界的超级英雄,功能强大到离谱!啥基础操作,像添加、替换、删除、加序编号啥的,那都不在话下。软件下载地址安装包还有正则表达式、文件名编辑器这些高级玩法,它也能轻松拿捏!它不仅能给文件改名,还能对文件目录和文件混合着改名。而且,Exif标签、GPS标签,甚至MSOffice文档引言写入这些功能,它也一应俱全。能批</div> </li> <li><a href="/article/1949661644305002496.htm" title="正则表达式" target="_blank">正则表达式</a> <span class="text-muted">Dylan_muc</span> <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/%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><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>一、什么是正则表达式?正则表达式是一种用于描述、匹配、检索和替换符合某些规则的文本字符串的工具。它像是一种简洁的“模式语言”,可以快速定位和操作大量文本中的特定内容。简而言之,正则表达式就是用特定的语法来描述一类字符串的规则,然后用这个规则去匹配、查找、筛选实际的文本内容。二、正则表达式的基础语法1.元字符(Metacharacters)正则表达式由普通字符(如a、1、X)和特殊字符(元字符)组成</div> </li> <li><a href="/article/1949625719021694976.htm" title="在 Go 语言中使用正则表达式提取所有匹配字符串的方法详解" target="_blank">在 Go 语言中使用正则表达式提取所有匹配字符串的方法详解</a> <span class="text-muted">gopher.guo</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>在Go语言中使用正则表达式提取所有匹配字符串的方法详解正则表达式(RegEx)是一种强大的文本处理工具,而在Go语言中,官方regexp标准库提供了完整的正则功能。一个常见需求是:从字符串中提取出所有符合某种模式的内容,比如所有邮箱地址、所有数字、所有HTML标签等。本文将介绍如何在Go中使用正则表达式一次性提取所有匹配项,并提供详细示例。一、核心函数:FindAllString与FindAllS</div> </li> <li><a href="/article/1949594701145370624.htm" title="正则表达式" target="_blank">正则表达式</a> <span class="text-muted"></span> <div>正则表达式是一种用来匹配字符串的规则语言。它常用于:检查输入是否合法(如用户名、邮箱、密码)从字符串中提取内容替换字符串中的某些部分正则意义示例匹配a匹配字符aa匹配“a”.任意单个字符.匹配“a”、“1”、”@”等\d任意数字[0-9]\d匹配“3”\w字母、数字、下划线[A-Za-z0-9_]\w匹配“a”、“5”、”_”\s空白符(空格、换行等)""、\n正则意义示例匹配*出现0次或多次a*</div> </li> <li><a href="/article/1949583101264982016.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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.Python库的概念和重要性Python库是预先编写好的模块或代码集合,旨在为开发者提供特定功能的复用性代码。它们通常由函数、类和方法组成,可以被导入到你的项目中使用。python库分为标准库和第三方库两种标准库(StandardLibrary):Python自带的库,包含了各种内置模块,如操作系统接口、文件I/O、字符串处理、正则表达式等。这些库无需额外安装,可以直接在Python中使用。第</div> </li> <li><a href="/article/1949549940132868096.htm" title="ECMAScript 2025 (ES16) 核心新特性(8项)" target="_blank">ECMAScript 2025 (ES16) 核心新特性(8项)</a> <span class="text-muted">Web - Anonymous</span> <a class="tag" taget="_blank" href="/search/ES6/1.htm">ES6</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>ECMAScript2025(ES16)于2025年6月正式发布,并引入了8项核心新特性,显著地提升了JavaScript的开发效率和表达能力。在此列举其关键特性解析及浏览器支持情况。目录一、异步与错误处理1、Promise.try()二、数据结构增强2、Set集合方法3、同步迭代器辅助方法三、模块与数据处理4、JSON模块导入5、延迟模块加载(deferimport)四、正则表达式增强6、Reg</div> </li> <li><a href="/article/1949523087548542976.htm" title="C# 正则表达式" target="_blank">C# 正则表达式</a> <span class="text-muted">lly202406</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>C#正则表达式引言正则表达式(RegularExpression)是一种用于处理字符串的强大工具,它可以快速地匹配、查找、替换字符串中的特定模式。在C#中,正则表达式被广泛应用于字符串处理、数据验证、网络编程等领域。本文将详细介绍C#正则表达式的基本概念、语法、应用场景以及一些常用技巧。正则表达式的基本概念正则表达式由字符集、量词、修饰符等组成。以下是一些基本概念:字符集:表示一组字符,可以是单个</div> </li> <li><a href="/article/1949300799171522560.htm" title="python的正则表达式" target="_blank">python的正则表达式</a> <span class="text-muted">小鬼客</span> <div>python提供了实现正则表达式的re模块。正则表达式的匹配字符:元字符描述\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。^匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入行尾。如</div> </li> <li><a href="/article/1949181873754271744.htm" title="Python代码库之正则表达式提出字符串内容(含demo源码)" target="_blank">Python代码库之正则表达式提出字符串内容(含demo源码)</a> <span class="text-muted">iCloudEnd</span> <div>importredefgetSearch(mstr,d):v=''m=re.search(mstr,d,re.I)ifm:v=m.group(1)returnvd="拼音:bìng"mstr=r"拼音:(.*?)<"pinyin=getSearch(mstr,d).strip()更多精彩代码请关注我的专栏reportlab教程和源码大全python源码大全Sqlite教程和SQL语句请关注我的专栏</div> </li> <li><a href="/article/1949161705716117504.htm" title="reflections java_「reflections」java 非常好用的反射框架Reflections - seo实验室" target="_blank">reflections java_「reflections」java 非常好用的反射框架Reflections - seo实验室</a> <span class="text-muted">weixin_39878855</span> <a class="tag" taget="_blank" href="/search/reflections/1.htm">reflections</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>reflectionsreflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。使用Reflections可以很轻松的获取以下元数据信息:1)获取某个类型的所有子类;比如,有一个父类是TestInterface,可以获取到TestInterface的所有子类。2)获取某个注解的所有类型/字段变量,支持注解参数匹配。3)使用正则表达式获取所有匹配的资源文件4)获取</div> </li> <li><a href="/article/1949038883052253184.htm" title="【原生JS】 前端JS字符串最常用 20 道面试题总结(含详细代码解析)" target="_blank">【原生JS】 前端JS字符串最常用 20 道面试题总结(含详细代码解析)</a> <span class="text-muted">全栈前端老曹</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</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/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>原生JavaScript字符串最常用20道面试题总结(含详细代码解析)字符串是前端开发中最常见的数据类型之一,也是各大公司高频考察点。以下是老曹总结的原生JS字符串相关的20道高频面试题,涵盖字符串操作、正则表达式、性能优化、常见陷阱等多个方面,每道题都配有详细的代码示例和讲解。面试题目录序号题目考察点1slice,substring,substr的区别?截取方法2如何判断一个字符串是否包含另一个</div> </li> <li><a href="/article/1948897820182376448.htm" title="Jmeter(10):json提取器元件及jsonpath介绍" target="_blank">Jmeter(10):json提取器元件及jsonpath介绍</a> <span class="text-muted">奔跑在路上you</span> <a class="tag" taget="_blank" href="/search/Jmeter_%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95/1.htm">Jmeter_接口测试</a><a class="tag" taget="_blank" href="/search/Jsonpath/1.htm">Jsonpath</a><a class="tag" taget="_blank" href="/search/jmeter/1.htm">jmeter</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>json提取器元件介绍:json提取器与正则表达式提取器功能类似,也是用来截取响应信息的部分保存到指定的变量中去,不同的是,它只能用来处理响应正文,并且响应正文必须是json格式的。它的优势是能更快更灵活的截取json格式文本中的内容。json提取器在jmeter5.2.1版本中部分字段没有汉化过来。路径:右击http请求——后置处理器——json提取器如下图所示:json提取器元件字段介绍:名称</div> </li> <li><a href="/article/1948708085962960896.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> <div>正则表达式(RegularExpression,简称Regex)是一种用于匹配、查找、替换文本模式的强大工具,广泛应用于编程、文本编辑(如Vim、VSCode)和数据处理(如Python、JavaScript)。以下是核心知识点和常见用法:1.基本语法符号说明示例.匹配任意字符(除换行符\n)a.c→"abc","ac"\d匹配数字(等价于[0-9])\d\d→"42"\w匹配单词字符(字母、数字</div> </li> <li><a href="/article/1948492432236670976.htm" title="python基础TASK5" target="_blank">python基础TASK5</a> <span class="text-muted">微_e569</span> <div>1.类和对象类:一些具有相同特性的对象的抽象。对象:类的具像(一个实例)。2.正则表达式正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。3.re模块re模块使Python语言拥有全部的正则表达式功能。re.search扫描整个字符串并返回第一个成功的匹配。re.sub用于替换字符串中的匹配项。4.datetime模块</div> </li> <li><a href="/article/1948445533265784832.htm" title="常用正则表达式" target="_blank">常用正则表达式</a> <span class="text-muted">嘻洋洋</span> <div>[]中括号匹配这个[]集合中的任一一个字符,[a-z]匹配小写字母。相反意思:使用^,[^xyz]不匹配这个集合中的任何一个字符{}大括号用于匹配次数,结合中括号使用比较多。{n}精确匹配n次{n,}匹配n次以上{n,m}匹配n-m次中括号和大括号综合使用场景//用户名是小写字母,长度不超过20个字符[a-z]{1,15}//qq号码:最低5位数,最高14位数。全部是数字,不能是0开头[1-9][</div> </li> <li><a href="/article/1948247058330742784.htm" title="ABAP中正则表达式语法,用法以及完整示例" target="_blank">ABAP中正则表达式语法,用法以及完整示例</a> <span class="text-muted">小赫不吃姜</span> <a class="tag" taget="_blank" href="/search/abap/1.htm">abap</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/sap/1.htm">sap</a><a class="tag" taget="_blank" href="/search/abap/1.htm">abap</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录1.ABAP中的正则表达式语法基础语法元素1.1字符匹配1.2预定义字符类1.3位置锚点1.4量词(重复匹配)1.5分组与捕获1.6特殊构造零宽断言模式修饰符2.基本用法2.1创建正则表达式对象2.2创建匹配器2.3简写形式3.常用方法3.1检查是否匹配3.2查找所有匹配项3.3获取匹配组4.实用实例4.1验证电子邮件格式4.2提取日期4.3分割字符串4.4正则表达式解析主要结构详细解析整数部</div> </li> <li><a href="/article/1948236725025304576.htm" title="Python 入门手札:从 0 到会--第九天Python的模块化编程--模块、包以及常见系统模块和第三方模块总结" target="_blank">Python 入门手札:从 0 到会--第九天Python的模块化编程--模块、包以及常见系统模块和第三方模块总结</a> <span class="text-muted"></span> <div>目录一、模块1.模块化编程(ModularProgramming)2.什么是模块(Module)3.模块的分类3.1内置模块(标准库模块)3.1.1.与操作系统交互3.1.2.文件与数据处理3.1.3.正则表达式与文本处理3.1.4.数学与随机数3.1.5.时间与日期3.1.6.数据结构与算法3.1.7.网络与服务3.1.8.异常与调试3.2第三方模块3.2.1.科学计算与数据分析3.2.2.机器</div> </li> <li><a href="/article/1948197139670691840.htm" title="掌握正则表达式:在Python中检测重复词的实战演练" target="_blank">掌握正则表达式:在Python中检测重复词的实战演练</a> <span class="text-muted">Kimgoeunlaogong</span> <div>本文还有配套的精品资源,点击获取简介:正则表达式是IT领域中用于文本处理的强大工具,本示例将介绍如何使用正则表达式检测字符串中的重复词,这在数据清洗、文本分析和日志处理等场景下非常有用。通过Python的re模块,我们将详细介绍检测重复词的步骤,包括字符串的处理、单词频率的统计以及重复词的筛选和输出。同时,解释如何使用不同的正则表达式元字符和修饰符来满足特定需求,例如不区分大小写或处理特殊字符。此</div> </li> <li><a href="/article/1948138385616990208.htm" title="split() 函数在 Java、JavaScript 和 Python 区别" target="_blank">split() 函数在 Java、JavaScript 和 Python 区别</a> <span class="text-muted">CATTLECODE</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>split()函数在Java、JavaScript和Python中均用于字符串分割,但在语法、参数设计和行为上存在显著差异。以下是三者的核心区别及使用示例:1.语法与参数设计语言语法参数说明JavaString.split(regex,limit)regex:必须为正则表达式(需转义特殊字符如.、`JavaScriptstr.split(separator,limit)separator:支持字符</div> </li> <li><a href="/article/1948069178158149632.htm" title="linux正则提取字符串,正则表达式 – shell脚本 如何使用正则表达式提取字符串..." target="_blank">linux正则提取字符串,正则表达式 – shell脚本 如何使用正则表达式提取字符串...</a> <span class="text-muted">weixin_39747577</span> <a class="tag" taget="_blank" href="/search/linux%E6%AD%A3%E5%88%99%E6%8F%90%E5%8F%96%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">linux正则提取字符串</a> <div>使用bashregularexpressions:re="http://([^/]+)/"if[[$name=~$re]];thenecho${BASH_REMATCH[1]};fi编辑–OP要求解释语法。Regularexpressionsyntax是一个很大的话题,我无法在这里全面解释,但我会尝试解释足够的理解这个例子。re="http://([^/]+)/"这是存储在bash变量中的正则表达</div> </li> <li><a href="/article/1947851985025822720.htm" title="Java 正则表达式详解" target="_blank">Java 正则表达式详解</a> <span class="text-muted">BigData_Hubert</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/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/regex/1.htm">regex</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>正则表达式乍一看上去是一堆繁琐的、无规律的、令人头大的字符串,但是其简单易学,适用于各种语言;当你了解他之后,你就会知道它的强大。很多程序设计语言都支持用正则表达式来进行字符串的操作。正则表达式简介初识正则表达式正则表达式是使用单个字符串来描述、匹配一系列规则的字符串。正则表达式并不仅限于某一种语言(几乎所有的语言都有字符串),在每种语言中有细微的差别。一个正则表达式字符串:^p[a-zA-Z_]</div> </li> <li><a href="/article/1947732117416898560.htm" title="Java String 正则表达式 设计模式 包装类 Object类 自动拆箱" target="_blank">Java String 正则表达式 设计模式 包装类 Object类 自动拆箱</a> <span class="text-muted">额么么么么</span> <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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>其它API(ApplicationProgramingInterface)应用程序接口(功能),我们java讲解最常用的一些功能。API作用:API表示的是功能,学习API可以快速进行编程开发。API设计初衷,设计者将复杂的业务逻辑,封装成方法,供调用者更好的使用。对于开发者而言,不需要关注功能的具体逻辑实现,只需要知道如何使用即可。Java提供了很多的包,有一些包需要导入,有一些不需要导入:1.</div> </li> <li><a href="/article/1947727328780021760.htm" title="19、Java正则表达式与字符集详解" target="_blank">19、Java正则表达式与字符集详解</a> <span class="text-muted">杠精协会主席</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/NIO%EF%BC%9A%E9%9D%A9%E6%96%B0I%2FO%E5%A4%84%E7%90%86%E7%9A%84%E6%96%B0%E8%8C%83%E5%BC%8F/1.htm">NIO:革新I/O处理的新范式</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/Pattern/1.htm">Pattern</a> <div>Java正则表达式与字符集详解1.Java正则表达式相关类在JavaJ2SE1.4版本中,引入了一些期待已久的正则表达式类,下面为你详细介绍:-CharSequence:这是一个新的接口,由多个类实现,用于以抽象的方式描述字符序列。-Pattern:该类将正则表达式封装在一个不可变的对象实例中。可以通过编译表达式字符串来创建实例,同时还有一些静态实用方法用于一次性匹配。importjava.uti</div> </li> <li><a href="/article/1947631398080802816.htm" title="华为服务器管理工具(Intelligent Platform Management Interface)" target="_blank">华为服务器管理工具(Intelligent Platform Management Interface)</a> <span class="text-muted">小小玫瑰大智慧</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>一、核心功能与技术架构硬件级监控与控制全维度传感器管理:实时监测CPU、内存、硬盘、风扇、电源等硬件组件的温度、电压、转速等参数,支持超过200种传感器类型。例如,通过IPMI命令ipmitoolsdrelist可快速获取服务器传感器状态,并通过正则表达式提取关键指标。远程操作能力:支持远程开关机、重启、BIOS设置调整、固件升级等操作,即使服务器操作系统崩溃或网络中断,仍可通过独立BMC芯片实现</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>