文档章节

最全的正则表达式

爱敲代码的程序员
 爱敲代码的程序员
发布于 2017/09/06 10:23
字数 5079
阅读 27
收藏 2
点赞 0
评论 0

正则表达式(regular expression)是一个描述字符模式的对象。使用JavaScript正则表达式可以进行强大的模式匹配和文本检索与替换功能。

1 作用

A 测试字符串的某个模式。

      例如,可以对一个输入字符串进行测试(包含/位置/……)

B  替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 

C  根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字 


2  正则表达式语法


    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 

3创建正则表达式 

    方法1:对象创建法

    var re = new RegExp();  //RegExp是一个对象,和Aarray一样  

     //没有任何效果,需要将正则表达式的内容作为字符串传递进去  

    re = new RegExp("a");//最简单的正则表达式,将匹配字母a  

   var  re  =  new RegExp("a","i");//第二个参数,表示匹配时不分大小写   a  =  A

★   RegExp 对象有 3 个方法:test()exec() 以及compile()

   01test()方法检索字符串中的指定值。返回值是 true 或 false。

   var patt1=new RegExp("e");
   document.write(patt1.test("Thebest things in life are free")); //true

   02 exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null

   var patt1=new RegExp("e");
   document.write(patt1.exec("The best things inlife are free"));//e

  03 compile() 方法用于改变 RegExp。

compile() 既可以改变检索模式,也可以添加或删除第二个参数。

  

var patt1=new RegExp("e");

document.write(patt1.test("The best things in lifeare free"));

patt1.compile("d");

document.write(patt1.test("The best things in life are free"));//truefalse

RegExp构造函数第一个参数为正则表达式的文本内容,而第二个参数则为可选项标志修饰符.可以组合使用 

 var re = new RegExp("a","g");       //匹配所有的a或A  


var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null);

//eeeeeenull

说明:

您可以向 RegExp 对象添加第二个参数,以设定检索。例如,如果需要找到所有某个字符的所有存在,则可以使用 "g" 参数 ("global")。

在使用 "g" 参数时,exec() 的工作原理如下:

  • 找到第一个 "e",并存储其位置
  • 如果再次运行 exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置

 

    方法2-直接量语法:

     var re = /a/gi;  

4正则表达式相关的方法和属性 

5测试正则表达式是如何工作的! 

正则 表达式案例解析: 

//test方法,测试字符串,符合模式时返回true,否则返回false  

var re = /he/;//最简单的正则表达式,将匹配he这个单词  

var str = "he";  

    alert(re.test(str));//true 


 

   str = "we";  

    alert(re.test(str));//false  

    str = "HE";  

    alert(re.test(str));

   //false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case-insensitive的表示)  

    re = /he/i;  

   alert(re.test(str));//true  

   str = "Certainly!He loves her!";  

   alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用^和$  

   re = /^he/i;//脱字符(^)代表字符开始位置  

   alert(re.test(str));//false,因为he不在str最开始  

   str = "He is a good boy!";  

   alert(re.test(str));//true,He是字符开始位置,还需要使用$  

   re = /^he$/i;//$表示字符结束位置  

   alert(re.test(str));//false  

   str = "He";  

   alert(re.test(str));//true 

  //当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用==或indexOf

  

  re = /\s/;      // \s匹配任何空白字符,包括空格、制表符、换页符等等  

  str= "user Name";//用户名包含空格  

  alert(re.test(str));//true  

  str = "user     Name";//用户名包含制表符  

  alert(re.test(str));//true  

  re=/^[a-z]/i;//[]匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写  

  str="variableName";//变量名必须以字母开头  

  alert(re.test(str));//true  

  str="123abc";  

  alert(re.test(str));//false  

当然,仅仅知道了字符串是否匹配模式还不够,我们还需要知道哪些字符匹配了模式 

Js代码  

var osVersion = "Ubuntu 8";//其中的8表示系统主版本号  

var re = /^[a-z]+\s+\d+$/i; //+号表示字符至少要出现1次,\s表示空白字符,\d表示一个数字  

alert(re.test(osVersion));//true,但我们想知道主版本号  

//另一个方法exec,返回一个数组,数组的第一个元素为完整的匹配内容  

re=/^[a-z]+\s+\d+$/i;  

arr = re.exec(osVersion);  

alert(arr[0]);//将osVersion完整输出,因为整个字符串刚好匹配re  

//我只需要取出数字  

re=/\d+/;  

var arr = re.exec(osVersion);  

alert(arr[0]);//8 

更复杂的用法,使用子匹配 

Js代码  

//exec返回的数组第1到n元素中包含的是匹配中出现的任意一个子匹配  

re=/^[a-z]+\s+(\d+)$/i;//用()来创建子匹配  

arr =re.exec(osVersion);  

alert(arr[0]);//整个osVersion,也就是正则表达式的完整匹配  

alert(arr[1]);//8,第一个子匹配,事实也可以这样取出主版本号  

alert(arr.length);//2  

osVersion = "Ubuntu 8.10";//取出主版本号和次版本号  

re = /^[a-z]+\s+(\d+)\.(\d+)$/i;//.是正则表达式元字符之一,若要用它的字面意义须转义  

arr = re.exec(osVersion);  

alert(arr[0]);//完整的osVersion  

alert(arr[1]);//8  

alert(arr[2]);//10  


注意,当字符串不匹配re时,exec方法将返回null  

String对象的一些和正则表达式有关的方法 

Js代码  

//replace方法,用于替换字符串  

var str ="some money";  

alert(str.replace("some","much"));//much money  

//replace的第一个参数可以为正则表达式  

var re = /\s/;//空白字符  

alert(str.replace(re,"%"));//some%money  

//在不知道字符串中有多少空白字符时,正则表达式极为方便  

str ="some some             \tsome\t\f";  

re = /\s+/;  

alert(str.replace(re,"#"));//但这样只会将第一次出现的一堆空白字符替换掉  

//因为一个正则表达式只能进行一次匹配,\s+匹配了第一个空格后就退出了  

re = /\s+/g;//g,全局标志,将使正则表达式匹配整个字符串  

alert(str.replace(re,"@"));//some@some@some@  

//另一个与之相似的是split  

var str = "a-bd-c";  

var arr = str.split("-");//返回["a","bd","c"]  

//如果str是用户输入的,他可能输入a-bd-c也可能输入a bd c或a_bd_c,但不会是abdc(这样就说他输错了)  

str = "a_db-c";//用户以他喜欢的方式加分隔符s  

re=/[^a-z]/i;//前面我们说^表示字符开始,但在[]里它表示一个负字符集  

//匹配任何不在指定范围内的任意字符,这里将匹配除字母处的所有字符  

arr = str.split(re);//仍返回["a","bd","c"];  

//在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是search  

str = "My age is 18.Golden age!";//年龄不是一定的,我们用indexOf不能查找它的位置  

re = /\d+/;  

alert(str.search(re));//返回查找到的字符串开始下标10  

//注意,因为查找本身就是出现第一次就立即返回,所以无需在search时使用g标志  

//下面的代码虽然不出错,但g标志是多余的  

re=/\d+/g;  

alert(str.search(re));//仍然是10  

注意,当search方法没有找到匹配时,将返回-1 

类似于exec方法,String对象的match方法也用于将字符串与正则表达式进行匹配并返回结果数组 

Js代码  

var str = "My name is CJ.Hello everyone!";  

var re = /[A-Z]/;//匹配所有大写字母  

var arr = str.match(re);//返回数组  

alert(arr);//数组中只会包含一个M,因为我们没有使用全局匹配  

re = /[A-Z]/g;  

arr = str.match(re);  

alert(arr);//M,C,J,H  

//从字符串中抽取单词  

re = /\b[a-z]*\b/gi;//\b表示单词边界  

str = "one two three four";  

alert(str.match(re));//one,two,three,four  

RegExp对象实例的一些属性 

Js代码  

var re = /[a-z]/i;  

alert(re.source);//将[a-z]字符串输出  

//请注意,直接alert(re)会将正则表达式连同前向斜线与标志输出,这是re.toString方法定义的  

每个RegExp对象的实例具有lastIndex属性,它是被查找字符串中下一次成功匹配的开始位置,默认值是-1。 lastIndex 属性被RegExp 对象的 exec 和 test 方法修改.并且它是可写的. 

Js代码  

var re = /[A-Z]/;  

//exec方法执行后,修改了re的lastIndex属性,  

var str = "Hello,World!!!";  

var arr = re.exec(str);  

alert(re.lastIndex);//0,因为没有设置全局标志  

re = /[A-Z]/g;  

arr = re.exec(str);  

alert(re.lastIndex);//1  

arr = re.exec(str);  

alert(re.lastIndex);//7  

当匹配失败(后面没有匹配),或lastIndex值大于字符串长度时,再执行exec等方法会将lastIndex设为0(开始位置) 

Js代码  

var re = /[A-Z]/;  

var str = "Hello,World!!!";  

re.lastIndex = 120;  

var arr = re.exec(str);  

alert(re.lastIndex);//0  


RegExp对象的静态属性 

Js代码  

//input 最后用于匹配的字符串(传递给test,exec方法的字符串)  

var re = /[A-Z]/;  

var str = "Hello,World!!!";  

var arr = re.exec(str);  

alert(RegExp.input);//Hello,World!!!  

re.exec("tempstr");  

alert(RegExp.input);//仍然是Hello,World!!!,因为tempstr不匹配  

//lastMatch 最后匹配的字符  

re = /[a-z]/g;  

str = "hi";  

re.test(str);  

alert(RegExp.lastMatch);//h  

re.test(str);  

alert(RegExp["$&"]);//i  ,$&是lastMatch的短名字,但由于它不是合法变量名,所以要。。  

//lastParen 最后匹配的分组  

re = /[a-z](\d+)/gi;  

str = "Class1 Class2 Class3";  

re.test(str);  

alert(RegExp.lastParen);//1  

re.test(str);  

alert(RegExp["$+"]);//2  

//leftContext  返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符  

//rigthContext 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符  

re = /[A-Z]/g;  

str = "123ABC456";  

re.test(str);  

alert(RegExp.leftContext);//123  

alert(RegExp.rightContext);//BC456  

re.test(str);  

alert(RegExp["$`"]);//123A  

alert(RegExp["$'"]);//C456  

multiline属性返回正则表达式是否使用多行模式,这个属性不针对某个正则表达式实例,而是针对所有正则表达式,并且这个属性可写.(IE与Opera不支持这个属性) 

Js代码  

alert(RegExp.multiline);  

//因为IE,Opera不支持这个属性,所以最好还是单独指定  

var re = /\w+/m;  

alert(re.multiline);  

alert(RegExp["$*"]);//RegExp对象的静态属性不会因为给RegExp某个对象实例指定了m标志而改变  

RegExp.multiline = true;//这将打开所有正则表达式实例的多行匹配模式  

alert(RegExp.multiline);  


使用元字符注意事项:元字符是正则表达式的一部分,当我们要匹配正则表达式本身时,必须对这些元字符转义.下面是正则表达式用到的所有元字符 
( [ { \ ^ $ | ) ? * + . 

Js代码  

var str = "?";  

var re = /?/;  

alert(re.test(str));//出错,因为?是元字符,必须转义  

re = /\?/;  

alert(re.test(str));//true  


使用RegExp构造函数与使用正则表达式字面量创建正则表达式注意点 

Js代码  

var str = "\?";  

alert(str);//只会输出?  

var re = /\?/;//将匹配?  

alert(re.test(str));//true  

re = new RegExp("\?");//出错,因为这相当于re = /\?/  

re = new RegExp("\\?");//正确,将匹配?  

alert(re.test(str));//true  


既然双重转义这么不友好,所以还是用正则表达式字面量的声明方式 

如何在正则表达式中使用特殊字符? 

Js代码  

//ASCII方式用十六进制数来表示特殊字符  

var re = /^\x43\x4A$/;//将匹配CJ  

alert(re.test("CJ"));//true  

//也可使用八进制方式  

re = /^\103\112$/;//将匹配CJ  

alert(re.test("CJ"));//true  

//还可以使用Unicode编码  

re =/^\u0043\u004A$/;//使用 Unicode,必须使用u开头,接着是字符编码的四位16进制表现形式  

alert(re.test("CJ"));  


另处,还有一些其它的预定义特殊字符,如下表所示: 

字符    描述 
\n      换行符 
\r      回车符 
\t      制表符 
\f      换页符(Tab) 
\cX     与X对应的控制字符 
\b      退格符(BackSpace) 
\v      垂直制表符 
\0      空字符("") 

字符类 ---〉简单类,反向类,范围类,组合类,预定义类 

Js代码  

//简单类  

var re = /[abc123]/;//将匹配abc123这6个字符中一个  

//负向类  

re = /[^abc]/;//将匹配除abc之外的一个字符  

//范围类  

re = /[a-b]/;//将匹配小写a-b 26个字母  

re = /[^0-9]/;//将匹配除0-9 10个字符之处的一个字符  

//组合类  

re = /[a-b0-9A-Z_]/;//将匹配字母,数字和下划线  


下面是正则表达式中的预定义类 


代码  等同于                 匹配 

.     IE下[^\n],其它[^\n\r]  匹配除换行符之外的任何一个字符 
\d   [0-9]                  匹配数字 
\D   [^0-9]                 匹配非数字字符 
\s    [\n\r\t\f\x0B]         匹配一个空白字符 
\S    [^ \n\r\t\f\x0B]       匹配一个非空白字符 
\w   [a-zA-Z0-9_]            匹配字母数字和下划线 
\W   [^a-zA-Z0-9_]           匹配除字母数字下划线之外的字符 


量词(下表量词单个出现时皆是贪婪量词) 

代码  描述 
*     匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 
+     匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于{1,}。 
?     匹配前面的子表达式零次或一次。例如,"do(es)?"可以匹配 "do" 或"does" 中的"do" 。? 等价于 {0,1}。 
{n}   n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 
{n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 


贪婪量词与惰性量词 

•用贪婪量词进行匹配时,它首先会将整会字符串当成一个匹配,如果匹配的话就退出,如果不匹配,就截去最后一个字符进行匹配,如果不匹配,继续将最后一个字符截去进行匹配,直到有匹配为止。直到现在我们遇到的量词都是贪婪量词 
•用惰性量词进行匹配时,它首先将第一个字符当成一个匹配,如果成功则退出,如果失败,则测试前两个字符,依些增加,直到遇到合适的匹配为止 

惰性量词仅仅在贪婪量词后面加个"?"而已,如"a+"是贪婪匹配的,"a+?"则是惰性的 

Js代码  

var str = "abc";  

var re = /\w+/;//将匹配abc  

re = /\w+?/;//将匹配a  

多行模式 

Js代码  

var re = /[a-z]$/;  

var str = "ab\ncdef";  

alert(str.replace(re,"#"));//ab\ncde#  

re =/[a-z]$/m;  

alert(str.replace(re,"#"));//a#\ncde#  



分组与非捕获性分组 

Js代码  

re = /abc{2}/;//将匹配abcc  

re = /(abc){2}/;//将匹配abcabc  

//上面的分组都是捕获性分组  

str = "abcabc ###";  

arr = re.exec(str);  

alert(arr[1]);//abc  

//非捕获性分组 (?:)  

re = /(?:abc){2}/;  

arr = re.exec(str);  

alert(arr[1]);//undefined  

候选(也就是所说的“或”) 

Js代码  

re = /^a|bc$/;//将匹配开始位置的a或结束位置的bc  

str ="add";  

alert(re.test(str));//true  

re = /^(a|bc)$/;//将匹配a或bc  

str ="bc";  

alert(re.test(str));//true  


当包含分组的正则表达式进行过test,match,search这些方法之后,每个分组都被放在一个特殊的地方以备将来使用,这些存储是分组中的特殊值,我们称之为反向引用 

Js代码  

var re = /(A?(B?(C?)))/;  

/*上面的正则表达式将依次产生三个分组 

(A?(B?(C?))) 最外面的 

(B?(C?)) 

(C?)*/  

str = "ABC";  

re.test(str);//反向引用被存储在RegExp对象的静态属性$1—$9中  

Alert(RegExp.$1+"\n"+RegExp.$2+"\n"+RegExp.$3);  

//反向引用也可以在正则表达式中使用\1 ,\2...这类的形式使用  

re = /\d+(\D)\d+\1\d+/;  

str = "2008-1-1";  

alert(re.test(str));//true  

str = "2008-4_3";  

alert(re.test(str));//false  


使用反向引用可以要求字符串中某几个位置上的字符必须相同.另外,在replace这类方法中可用特殊字符序列来表示反向引用 

Js代码  

 

re = /(\d)\s(\d)/;  

str = "1234 5678";  

alert(str.replace(re,"$2 $1"));//在这个里面$1表示第一个分组1234,$2则表示5678  

 

其它——〉正向前瞻,用来捕获出现在特定字符之前的字符,只有当字符后面跟着某个特定字符才去捕获它。与正向前瞻对应的有负向前瞻,它用匹配只有当字符后面不跟着某个特定字符时才去匹配它。在执行前瞻和负向前瞻之类的运算时,正则表达式引擎会留意字符串后面的部分,然而却不移动index 
 

Js代码  

 

//正向前瞻  

re = /([a-z]+(?=\d))/i;  

//我们要匹配后面跟一个数字的单词,然后将单词返回,而不要返回数字  

str = "abc every1 abc";  

alert(re.test(str));//true  

alert(RegExp.$1);//every  

alert(re.lastIndex);//使用前瞻的好处是,前瞻的内容(?=\d)并不会当成一次匹配,下次匹配仍从它开始  

//负向前瞻(?!)  

re = /([a-z](?!\d))/;i  

//将匹配后面不包含数字的字母,并且不会返回(?!\d)中的内容  

str = "abc1 one";  

alert(re.test(str));  

alert(RegExp.$1);//one  



构建一个验证电子邮箱地址有效性的正则表达式。电子邮箱地址有效性要求(我们姑且这样定义):用户名只能包含字母数字以及下划线,最少一位,最多25位,用户名后面紧跟@,后面是域名,域名名称要求只能包含字母数字和减号(-),并且不能以减号开头或结尾,然后后面是域名后缀(可以有多个),域名后缀必须是点号连上2-4位英文字母 

 

手机号码正则表达式验证。

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1[34578]\d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}

或者

function checkPhone(){ 
    var phone = document.getElementById('phone').value;
    if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){ 
        alert("手机号码有误,请重填");  
        return false; 
    } 
}

下面简单的解释一下:

^1(3|4|5|7|8)\d{9}$

表示以1开头,第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。

固定电话号码正则表达式

 function checkTel(){
 var tel = document.getElementById('tel').value;
if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel)){
alert('固定电话有误,请重填');
return false;
}
}

身份证正则:

//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)

其他

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
提取信息中的中国身份证号码:\d{18}|\d{15}
提取信息中的整数:\d+
提取信息中的浮点数(即小数):(-?\d*)\.?\d+
提取信息中的任何数字 :(-?\d*)(\.\d+)?
提取信息中的中文字符串:[\u4e00-\u9fa5]*
提取信息中的双字节字符串 (汉字):[^\x00-\xff]*

使用:

test()方法在字符串中查找是否存在指定的正则表达式,并返回布尔值,如果存在则返回true,否则返回false。

var pattern = new RegExp('Box','i');
var str = 'box';
alert(pattern.test(str)); //true
var pattern = /Box/i;
var str = 'box';
alert(pattern.test(str)); //true
var pattern = /Box/i;
var str = 'This is a box';
alert(pattern.test(str)); //true

© 著作权归作者所有

共有 人打赏支持
爱敲代码的程序员
粉丝 74
博文 42
码字总数 82530
作品 0
海淀
程序员
grep用法简介之二

上一篇文章总结了一些grep基本用法。在这次的内容里介绍grep和正则表达式结合使用的方法。 首先介绍下正则表达式,正则表达式非基本和扩展两种。 名词释义:正则表达式:正则表达式其实就是描...

bluezombiecn ⋅ 2014/05/13 ⋅ 0

学习正则表达式在python中的应用

目的:对文本的处理,正则表达式的功能很强大,可以很巧妙的过滤、匹配、获取想要的字符串,是必须学习的技能,这里只记录常用的写法,详细文档可以参看官方帮助文档。 环境:ubuntu 16.04 ...

RickyHuL ⋅ 2017/06/24 ⋅ 0

js和java中正则表达式的易混淆点

js中正则表达式的使用 对表单中的值进行正则表达式匹配一般有两种方法: var reg = new RegExp(regStr); reg.test(value); 如下: var reg = new RegExp(“\d{3}”); reg.test(“abc123def”...

joying华 ⋅ 2014/07/30 ⋅ 0

一个demo学会js

全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算法全...

luanpeng825485697 ⋅ 2017/08/04 ⋅ 0

八Python正则表达式

正则表达式是搜索、替换和解析复杂字符串的一种强大而标准的方法,Python中的正则相关的东西全在re模块下。 1 常用的匹配 ^匹配字符串的开始 $匹配字符串的结尾 b匹配一个单词的边界 d匹配任...

dkz ⋅ 2013/02/26 ⋅ 0

Java魔法堂:深入正则表达式API

目录                               一、前言 二、正则表达式的使用诉求 三、java.util.regex包 四、java.lang.String实例 五、最短路径实现诉求 六、Java支...

fsjohnhuang ⋅ 2014/11/16 ⋅ 0

Java 根据多个连续的符号分割字符串

这几天开始重新学习Java,在课程最后有一道题要求找出设备名称,题目如下: 1.编写程序,将字符串“打印机钟表//自行车雨伞%%收音机??电脑”进行拆分,输出每 个设备的名字。 刚开始思路:将...

遮霜挡雪 ⋅ 2015/06/15 ⋅ 0

MySql模糊查询like通配符使用详细介绍

一、SQL模式 SQL的模式匹配允许你使用“”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时...

snail- ⋅ 2016/01/21 ⋅ 0

grep命令总结

grep 文件过滤分割与合并 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本...

pk2008 ⋅ 2017/10/30 ⋅ 0

MySql模糊查询like通配符

MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。 一、SQL模式 SQL的模式匹配允许你使用“”匹配任何单个字符,而“%”匹配任意数目...

别寒 ⋅ 2015/08/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Gitee 生成并部署SSH key

1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair...# 三次回车即可生成 ssh key 查看你的 ...

晨猫 ⋅ 47分钟前 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部