脚本里面如何比较hash算法 字符串查找的匹配模式

bash shell脚本,如何用sed 命令打印出匹配行和匹配行的第N行_百度知道
bash shell脚本,如何用sed 命令打印出匹配行和匹配行的第N行
bash shell脚本,如何用sed 命令打印出匹配行和匹配行的第7行至第12行?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
sed&-n&'/pattern/p'&file_name&|sed&-n&7,12p#pattern是你要查的内容#file_name是你要查的文件以上实现:打印出匹配结果中的7-12行sed&-n&'/pattern/{7,12p}'&file_name以上实现将文件中7到12行中匹配的数据显示出来
采纳率:75%
sed -n ' /pattern/{= ; 7,12p} ' yourfile
为您推荐:
其他类似问题
shell脚本的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言实现字符串匹配KMP算法
转载 &更新时间:日 11:22:46 & 投稿:hebedich
相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。
字符串匹配是计算机的基本任务之一。
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?
下面的的KMP算法的解释步骤
首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。
因为B与A不匹配,搜索词再往后移。
就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。
接着比较字符串和搜索词的下一个字符,还是相同。
直到字符串有一个字符,与搜索词对应的字符不相同为止。
这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。
一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息,不要把"搜索位置"移回已经比较过的位置,继续把它向后移,这样就提高了效率。
怎么做到这一点呢?可以针对搜索词,算出一张《部分匹配表》(Partial Match Table)。这张表是如何产生的,后面再介绍,这里只要会用就可以了。
已知空格与D不匹配时,前面六个字符"ABCDAB"是匹配的。查表可知,最后一个匹配字符B对应的"部分匹配值"为2,因此按照下面的公式算出向后移动的位数:
  移动位数 = 已匹配的字符数 - 对应的部分匹配值
因为 6 - 2 等于4,所以将搜索词向后移动4位。
因为空格与C不匹配,搜索词还要继续往后移。这时,已匹配的字符数为2("AB"),对应的"部分匹配值"为0。所以,移动位数 = 2 - 0,结果为 2,于是将搜索词向后移2位。
因为空格与A不匹配,继续后移一位。
逐位比较,直到发现C与D不匹配。于是,移动位数 = 6 - 2,继续将搜索词向后移动4位。
逐位比较,直到搜索词的最后一位,发现完全匹配,于是搜索完成。如果还要继续搜索(即找出全部匹配),移动位数 = 7 - 0,再将搜索词向后移动7位,这里就不再重复了。
下面介绍《部分匹配表》是如何产生的。
首先,要了解两个概念:"前缀"和"后缀"。 "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。
"部分匹配值"就是"前缀"和"后缀"的最长的共有元素的长度。以"ABCDABD"为例,
  - "A"的前缀和后缀都为空集,共有元素的长度为0;
  - "AB"的前缀为[A],后缀为[B],共有元素的长度为0;
  - "ABC"的前缀为[A, AB],后缀为[BC, C],共有元素的长度0;
  - "ABCD"的前缀为[A, AB, ABC],后缀为[BCD, CD, D],共有元素的长度为0;
  - "ABCDA"的前缀为[A, AB, ABC, ABCD],后缀为[BCDA, CDA, DA, A],共有元素为"A",长度为1;
  - "ABCDAB"的前缀为[A, AB, ABC, ABCD, ABCDA],后缀为[BCDAB, CDAB, DAB, AB, B],共有元素为"AB",长度为2;
  - "ABCDABD"的前缀为[A, AB, ABC, ABCD, ABCDA, ABCDAB],后缀为[BCDABD, CDABD, DABD, ABD, BD, D],共有元素的长度为0。
"部分匹配"的实质是,有时候,字符串头部和尾部会有重复。比如,"ABCDAB"之中有两个"AB",那么它的"部分匹配值"就是2("AB"的长度)。搜索词移动的时候,第一个"AB"向后移动4位(字符串长度-部分匹配值),就可以来到第二个"AB"的位置。
  接下来,就是我自己对KMP算法的实现了。
  这个算法的实现主要包括了三个方面:
  1) 求得我们用来搜索字符串的部分匹配值表
  2) 实现待搜索字符串在搜索过程中的指针的移动问题
  3) 如何定位我们搜索到的结果
  接下来我就贴上我实现的代码
/**用KMP算法实现字符串匹配搜索方法*该程序实现的功能是搜索本目录下的所有文件的内容是否与给定的*字符串匹配,如果匹配,则输出文件名:包含该字符串的行*待搜索的目标串搜索指针移动位数 = 已匹配的字符数 - 对应部分匹配值*/
#include &stdio.h&#include &string.h&#include &stdlib.h&
#define KEYWORD_MAX_LENGTH 100&&&&& //设定搜索串的最大长度
int kmp_table[KEYWORD_MAX_LENGTH];& //为搜索串建立kmp表char prefix_stack[KEYWORD_MAX_LENGTH]; //前缀表达式栈char suffix_stack[KEYWORD_MAX_LENGTH]; //后缀表达式栈int keyword_length = 0;& //搜索串的长度int record_position[KEYWORD_MAX_LENGTH]; //记录与关键字串匹配源串中的位置
/**GetMatchValue:获得字符串src的部分匹配值*/int GetMatchValue(char *src){&&& int value = 0;&&& int src_len = strlen(src);&&& char *begin =&&& //初始化指向字符串第一个字符&&& char *end = src + (src_len - 1);& //初始化指向字符串最后一个字符&&& int i = 0;&&& for(i=0;i&(src_len-1);i++)&&& {&&&&&&& prefix_stack[i] = *&&&&&&& suffix_stack[i] = *&&&&&&& begin++;&&&&&&& end--;&&& }&&& char *p = prefix_&&& char *q = suffix_stack + (src_len - 2);& //指向栈中最后一个元素&&& int flag = 0;&& //用一个标志位来确定后缀栈中到最后一个元素都与前缀栈中的符号匹配&&& while(q &= suffix_stack)&&& {&&&&&&& if(*p == *q)&&&&&&& {&&&&&&&&&&& value++;&&&&&&&&&&& p++;&&&&&&&&&&& flag=1;&&&&&&& }&&&&&&& else {&&&&&&&&&&& flag = 0;&&&&&&& }&&&&&&& q--;&&& }&&& if(flag == 0) value = 0;&&&}
/**创建搜索字符串的KMP表*/int Create_KMP_Table(char *str,int *table){&&&&&& char *&&& keyword_length = strlen(str);&&& for(i=0;i&keyword_i++)&&& {&&&&&&& if(i == 0) {&&&&&&&&&&& table[i] = 0;&& //第一个字符无前缀和后缀,所以为0&&&&&&& }&&&&&&& else {&&&&&&&&&&& dst = (char*)malloc((i+2));&&&&&&&&&&& if(dst == NULL)&&&&&&&&&&& {&&&&&&&&&&&&&&& printf("malloc space error!\n");&&&&&&&&&&&&&&& return EXIT_FAILURE;&&&&&&&&&&& }&&&&&&&&&&& strncpy(dst,str,(i+1));&& //匹配str的前(i+1)个字符&&&&&&&&&&& dst[i+1] = '\0';&&& //注意字符串要以'/0'结尾&&&&&&&&&&& table[i] = GetMatchValue(dst); &&&&&&&&&&& free((void*)dst);&&& &&&&&&& }&&& }&&& return EXIT_SUCCESS;}
//打印搜索字符串对应的KMP表void Table_Print(char *str,int *table){&&&&&& char c = *&&& while(c != '\0')&&& {&&&&&&& printf("%-4c",c);&&&&&&& //左对齐输出搜索字符串中的字符&&&&&&& c = *++&&& }&&& printf("\n");&&& for(i=0;i&keyword_i++)&&& {&&&&&&& printf("%-4d",table[i]); //左对齐输出每个字符对应的部分匹配值&&& }&&& printf("\n");}
//在目标串dst_str中搜索关键子串search_str,打印出关键字串的位置信息,返回与关键字串匹配的数目int Search_Keyword(char *dst_str,char *search_str){&&& char *p = dst_&&& char *q = search_&&& char *
&&& //创建关键字串的KMP表&&& &&& Create_KMP_Table(search_str,kmp_table);&&& &&& int count = 0;& //记录现在已经匹配的数目&&& int k = 0;&&&& //记录与关键字串匹配的字串的数目&&& int move = 0;& //当字符串不匹配时,搜索指针移动的位数&&&
&&& while(*p != '\0')&& //直到搜索到目标串的最后一个字符为止&&& {&&&&&&& temp =&&&&&&& while(*q != '\0')&&&&&&& {&&&&&&&&&&& if(*q == *temp)&&&&&&&&&&& {&&&&&&&&&&&&&&& count++;&&&&&&&&&&&&&&& temp++;&&&&&&&&&&&&&&& q++;&&&&&&&&&&& }&&&&&&&&&&&&&&&&&& }&&&&&&& &&&&&&& if(count == 0)&&&&&&&&&&& p++;&&&&&&& else {&&&&&&&&&&& if(count == keyword_length)&&&&&&&&&&& {&&&&&&&&&&&&&&& record_position[k++] = (temp-dst_str)-(keyword_length);&&&&&&&&&&& }&&&&&&&&&&& move = count - kmp_table[count-1];&&&&&&&&&&& p +=&&&&&&& }
&&&&&&& count = 0;&&&&&&& q = search_&&& }&&&}
int main(int argc,char **argv){&&& char *search_str = argv[1];&&& //char dst_str[] = "hello woshijpf woshijpf woshij woshijp woshijpf";&&& char dst_str[] = "BBC ABCDAB ABCDABCDABDE";&&& &&& printf("Please input serach string and dst_string\n");&&& if(search_str == NULL)&&& {&&&&&&& printf("Please input search string\n");&&&&&&& return EXIT_FAILURE;&&& }
&&& if(dst_str == NULL)&&& {&&&&&&& printf("Please input dst_string\n");&&&&&&& return EXIT_FAILURE;&&& }&&& &&& int result = Search_Keyword(dst_str,search_str);& //放回搜索到的结果的数目&&& Table_Print(search_str,kmp_table);&&& printf("%s\n",dst_str);&&&&&&&& //输出待搜索的目标串&&& if(result == 0)&&& {&&&&&&& printf("Sorry!Don't find the string %s\n",search_str);&&&&&&& return EXIT_SUCCESS;&&& }&&& else {&&&&&&& int i,j,&&&&&&& int before = 0;&&&&&&& for(i=0;i&i++)&&&&&&& {&&&&&&&&&&& num = record_position[i] -&&& //打印搜索串在目标串中的位置&&&&&&&&&&& before = record_position[i]+1;&&&&&&&&&&& for(j=1;j&=j++)&&&&&&&&&&&&&&& printf(" ");&&&&&&&&&&& printf("*");&&&&&&& }&&&&&&& printf("\n");&&& }&&& &&& return EXIT_SUCCESS;}
  测试的结果:
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具正则表达式匹配不包含某些字符串的技巧
转载 &更新时间:日 09:13:25 & 作者:森威尔
这篇文章主要介绍了正则表达式匹配不包含某些字符串的技巧,详细分解了应该怎么做和这么做的原因,需要的朋友可以参考下
经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含‘h',‘e',‘d'三个但字符。那什么样的正则表达式能过滤出不包含完整“hello”字串的信息呢?
事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题:
代码如下:^((?!hede).)*$
上面这个表达式就能过滤出不包含‘hede'字串的信息。我上面也说了,这种写法并不是正则表达式“擅长”的用法,但它是可以这样用的。
一个字符串是由n个字符组成的。在每个字符之前和之后,都有一个空字符。这样,一个由n个字符组成的字符串就有n+1个空字符串。我们来看一下“ABhedeCD”这个字符串:
所有的e编号的位置都是空字符。表达式(?!hede).会往前查找,看看前面是不是没有“hede”字串,如果没有(是其它字符),那么.(点号)就会匹配这些其它字符。这种正则表达式的“查找”也叫做“zero-width-assertions”(零宽度断言),因为它不会捕获任何的字符,只是判断。
在上面的例子里,每个空字符都会检查其前面的字符串是否不是‘hede',如果不是,这.(点号)就是匹配捕捉这个字符。表达式(?!hede).只执行一次,所以,我们将这个表达式用括号包裹成组(group),然后用*(星号)修饰——匹配0次或多次: 代码如下:((?!hede).)*。
你可以理解,正则表达式((?!hede).)*匹配字符串"ABhedeCD"的结果false,因为在e3位置,(?!hede)匹配不合格,它之前有"hede"字符串,也就是包含了指定的字符串。
在正则表达式里, ?! 是否定式向前查找,它帮我们解决了字符串“不包含”匹配的问题。
以下是一些补充:
分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下。
在hacker news上看到regex golf,几道很有趣的正则表达式的题,有的需要用到不匹配这种匹配,比如需要匹配不包含某个单词的串。
开始正题之前,先来看看正则表达式的语法:
[abc] a或b或c . 任意单个字符 a? 零个或一个a
[^abc] 任意不是abc的字符 \s 空格 a* 零个或多个a
[a-z] a-z的任意字符 \S 非空格 a+ 一个或多个a
[a-zA-Z] a-z或A-Z \d 任意数字 a{n} 正好出现n次a
^ 一行开头 \D 任意非数字 a{n,} 至少出现n次a
$ 一行末尾 \w 任意字母数字或下划线 a{n,m} 出现n-m次a
(...) 括号用于分组 \W 任意非字母数字或下划线 a*? 零个或多个a(非贪婪)
(a|b) a或b \b 单词边界 (a)...\1 引用分组
(?=a) 前面有a (?!a) 前面没有a \B 非单词边界
正则表达式中有(?=a)和(?!a)来表示我们是否需要匹配某个东西。
所以,有需要不匹配某样内容时,就可以用(?!a)了。比如要匹配不含hello的字符串就可以这样写。
^(?!.*hello)
这里.*用来表示hello之前可能有其他的字符,为什么还要加^呢,因为如果不加的话,可能匹配到h之后的这个位置上了。
现在就可以解决regex golf上的abba这道题了。
这道题是去匹配不含abba这种形式的单词,比如abba,anallagmatic就不应该匹配上。
正则表达式代码:
^(?!.*(.)(.)\2\1)
然后利用不匹配,还可以解决prime这道题,这道题匹配有素数个x的串,先看正则。
^(?!(xx+)\1+$)
(xx+)是匹配2个及2个以上的x,(xx+)\1+就是匹配重复出现2个及以上的串,所以(xx+)\1+就表示了那些非素数的串,那么素数串就是除去这些非素数串,即是以上的正则表达式了。
PS:关于正则,本站还提供了2款非常简便实用的正则测试工具供大家使用:
JavaScript正则表达式在线测试工具:
正则表达式在线生成工具:
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具积累比较常用的正则表达式(例如:匹配中文、匹配html)
转载 &更新时间:日 10:19:37 & 投稿:mrr
本文是小编在日常工作中积累并整理的有关一些常用的正则表达式(例如:匹配中文、匹配html),在此把全部内容分享在脚本之家网站,需要的朋友可以来脚本之家网站学习
正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
匹配中文字符的正则表达式: [u4e00-u9fa5]&&
  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
  匹配双字节字符(包括汉字在内):[^x00-xff]
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
  匹配空白行的正则表达式:ns*r
  评注:可以用来删除空白行
  匹配HTML标记的正则表达式:&(S*?)[^&]*&.*?|&.*? /&
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
  匹配首尾空白字符的正则表达式:^s*|s*$
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
  评注:表单验证时很实用
  匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求
  匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  评注:表单验证时很实用
  匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
  评注:匹配形式如
  匹配腾讯QQ号:[1-9][0-9]{4,}
  评注:腾讯QQ号从10000开始
  匹配中国邮政编码:[1-9]d{5}(?!d)
  评注:中国邮政编码为6位数字
  匹配身份证:d{15}|d{18}
  评注:中国的身份证为15位或18位
  匹配ip地址:d+.d+.d+.d+
  评注:提取ip地址时有用
  匹配特定数字:
  ^[1-9]d*$    //匹配正整数
  ^-[1-9]d*$   //匹配负整数
  ^-?[1-9]d*$   //匹配整数
  ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
  ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
  ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
  ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
  ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
  ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
  ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
  评注:处理大量数据时有用,具体应用时注意修正
  匹配特定字符串:
  ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
  ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
  ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
  ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
  在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
  只能输入数字:“^[0-9]*$”
  只能输入n位的数字:“^d{n}$”
  只能输入至少n位数字:“^d{n,}$”
  只能输入m-n位的数字:“^d{m,n}$”
  只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
  只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
  只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
  只能输入非零的正整数:“^+?[1-9][0-9]*$”
  只能输入非零的负整数:“^-[1-9][0-9]*$”
  只能输入长度为3的字符:“^.{3}$”
  只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
  只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
  只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
  只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
  只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
  验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
  只能包含字符、数字和下划线。
  验证是否含有^%&'',;=?$"等字符:“[^%&'',;=?$x22]+”
  只能输入汉字:“^[u4e00-u9fa5],{0,}$”
  验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
  验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
  验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
  正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
  “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
  验证身份证号(15位或18位数字):“^d{15}|d{}18$”
  验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
  验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
  正确格式为:“01”“09”和“1”“31”。
  匹配中文字符的正则表达式: [u4e00-u9fa5]
  匹配双字节字符(包括汉字在内):[^x00-xff]
  匹配空行的正则表达式:n[s| ]*r
  匹配HTML标记的正则表达式:/&(.*)&.*|&(.*) /&/
  匹配首尾空格的正则表达式:(^s*)|(s*$)
  匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
  匹配网址URL的正则表达式:- ./?%&=]*)?
  (1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
  String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").}
  (2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
String.prototype.trim = function()
  return this.replace(/(^s*)|(s*$)/g, "");
  (3)应用:利用正则表达式分解和转换IP地址
 function IP2V(ip) //IP地址转换成对应数值
  re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
  if(re.test(ip))
  return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
  throw new Error("Not a valid IP address!")
  (4)应用:从URL地址中提取文件名的javascript程序
  s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ;//Page1.htm
  (5)应用:利用正则表达式限制网页表单里的文本框输入内容
  用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')
"onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^u4E00-u9FA5]/g,''))"
  用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')
"onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^uFF00-uFFFF]/g,''))"
  用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste=
"clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''))"
  用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'')
"onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''
以上内容就是本文的全部叙述,希望大家喜欢,如果大家有更好的有关正则表达式的知识,可以共享哦。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3559)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'awk脚本
模式匹配语句
~匹配运算符
!~不匹配运算符',
blogAbstract:'
1、匹配运算符~的使用:
#!/usr/bin/awk& -f
&&&&&&&&&&&&&&&&&&&&& //各种操作。
&&&&&&&&&&&&&&&&&&&&&&&&下面的:/条件/&
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 java模糊匹配字符串 的文章

 

随机推荐