正则

lucene4.7 正则查询(RegexpQuery)(八)

早过忘川 提交于 2019-12-01 03:25:30
今天要分享的是关于lucene中另外一种丰富的查询方式----正则查询,lucene内置了许多的查询API,以及更强大的自定义查询方式的QueryParse,大部分情况下我们使用内置的查询API,基本上就可以满足我们的需求了,但是如果你想更灵活的定制自己的查询或者改写自己的查询API那么你完全可以继承QueryParse类来完成这项工作。 从某种方式上来说,正则查询(RegexpQuery)跟通配符查询(WildcardQuery)的功能很相似,因为他们都可以完成一样的工作,但是不同的是正则查询支持更灵活定制细化查询,这一点与通配符的泛化是不一样的,而且正则查询天生支持使用强大的正则表达式的来准确匹配一个或几个term,需要注意的是,使用正则查询的字段最好是不分词的,因为分词的字段可能会导致边界问题,从而使查询失败,得不到任何结果,这一点和WildcardQuery效果是一样的。 下面先来看一下,散仙的测试数据,为了看出分词与不分词给查询造成的影响,散仙的用同样的内容做测试,分词工具使用的是IK的分词器,截图如下: 在上图中,散仙使用2个字段存储一样的内容,一个是分过词的,一个没分过词的,下面给出使用正则查询的核心代码: RegexpQuery query=new RegexpQuery(new Term(field, ".*"+searchStr+".*")); //

平台正则使用

落花浮王杯 提交于 2019-11-30 21:24:55
-- select * from ods_eventID limit 10; select logmessage, -- regexp_extract(logmessage,'\\"Services\sType:ICALL\\"',0) as serviceType regexp_extract(replace(logmessage,"\"",""),'Services Type:(.*?),',1) as serviceType from ods_eventID limit 10; -- 平台上查出来的字段: -- "[{""POI Categories"":""-"",""POI Provider"":""NavInfo"",""POI Address"":{""Address"":""available"",""Latitude"":""available"",""Longitude"":""available""},""Additional Notes"":""-"",""POI Name"":""äž­å›œçŸ³åŒ–é¹ç«¹æºåŠ æ²¹ç«™""}]" "{""Notes"":[""User: cleanupAdmin""],""Call Reason"":[""INVISIBLE_CLEANUP""],""Services Type"":""BCALL""

正则笔记

穿精又带淫゛_ 提交于 2019-11-30 17:57:21
1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4,至少一个汉字的正则表达式:"^[\u4e00-\u9fa5]" 5.至少一个汉字、数字、字母、下划线: "[a-zA-Z0-9_\u4e00-\u9fa5]+" 6.全是中文:"^[\u0391-\uFFE5]+$" 7.全是字母:"^[a-zA-Z]+$" 8.全是数字:"^[0-9]+$" 9.只含有汉字、数字、字母、下划线,下划线位置不限: ^[a-zA-Z0-9_\u4e00-\u9fa5]+$ 108、2~4个汉字 "^[\u4E00-\u9FA5]{2,4}$"; 10.匹配Email地址的正则表达式:^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$ 11.手机号:^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$ 12.匹配身份证:d{15}|d{18} 评注:中国的身份证为15位或18位 13.匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 0511-4405222 或 021-87888822 14.匹配ip地址:d+.d+.d+.d+

logstash之grok过滤

試著忘記壹切 提交于 2019-11-30 17:51:25
简介   前面我们的nginx日志编码使用的json,logstash直接输入预定义好的 JSON 数据,这样就可以省略掉 filter/grok 配置,但是在我们的生产环境中,日志格式往往使用的是普通的格式,因此就不得不使用logstash的filter/grok进行过滤,下面我们就来讲下如何配置。 配置 1.nginx日志格式 为了帮助我们有效的理解grok的正则表达式,因此在这我们将日志格式定义的复杂一些,基本是各个使用的字段都涉及到了,google上好多都是套用的默认格式,我费好大劲才弄明白。 log_format main ' $time_local - $upstream_addr $server_addr : $server_port ' ' $request_method $uri $args ' '- $remote_addr $server_protocol [ $http_user_agent ] [ $http_cookie ] $http_referer ' ' $host $status 0 0 $bytes_sent $request_length 0' '" $upstream_cache_status " $request_time $upstream_response_time ' ; 对应的日志如下: 08 /Jan/ 2016 : 08 :

Logstash中的Grok正则捕获

自作多情 提交于 2019-11-30 17:46:42
概述 Grok 是 Logstash 最重要的插件。你可以在 grok 里预定义好命名正则表达式 Grok 支持把预定义的 grok 表达式 写入到文件中,官方提供的预定义 grok 表达式见: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns 。 grok的语法格式为 %{SYNTAX:SEMANTIC} SYNTAX是文本要匹配的模式 SEMANTIC 是匹配到的文本片段的标识 例如: % { NUMBER : duration } % { IP : client } 默认情况下,所有的SEMANTIC是以字符串的方式保存,如果想要转换一个SEMANTIC的数据类型,例如转换一个字符串为整形,可以写成如下的方式: %{NUMBER:num:int} 例如日志 55.3 .244 .1 GET /index.html 15824 0.043 可以写成如下的grok过滤表达式 % { IP : client } % { WORD : method } % { URIPATHPARAM : request } % { NUMBER : bytes } % { NUMBER : duration } 示例 %{COMBINEDAPACHELOG} %

正则的使用

末鹿安然 提交于 2019-11-30 16:55:40
转义符号的使用 \ var a = 'aasdsa\'saf'; 可以把紧跟的字符转义,使其失去本来的意义拼接HTML简便写法 var html = '<div><span>+'+ '</sapn></div>';     var html = '<div><span>\ \</sapn></div>'; RegExp 创建方式 直接量 var reg = /abc/;   reg.test('abc') 测试字符串中包含表达式 返回true new RegExp var reg = new RegExp('abc','i'); vae reg1 = new RegExp(reg ,'i');    来源: https://www.cnblogs.com/guyuedashu/p/11605000.html

正则

梦想的初衷 提交于 2019-11-30 16:10:18
正则表达式:[^/]+(?!.*/) [^/]+ 表示匹配任意长度的字符串,字符串中不包含有字符 / ,可以把以/分割开的字符串全匹配到 .*/ 表示任意以/ 结尾的字符串,可以把后在带有/的字符串匹配到,前面再加上?!,再用圆括号包住表示 排除掉(?!.*/) => 以/结尾的字符串 整个表达式的意思就是匹配任意长度的不包含/ 的字符串,并把以/结尾的字符串排除掉 来源: https://www.cnblogs.com/wa502/p/11603343.html

mysql 正则模式和like模糊查询

穿精又带淫゛_ 提交于 2019-11-30 12:32:36
MySql like模糊查询使用详解 一、SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。 SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,%:表示任意个或多个字符。可匹配任意类型和长度的字符。 比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ 将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’ 若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’ 虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。 2,_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符) 比如 SELECT * FROM [user] WHERE u

微信开发者工具中的正则表达式解析

白昼怎懂夜的黑 提交于 2019-11-30 12:23:27
在微信开发者工具写一个手机号码验证的时候 是这样的 var TEL_REGEXP = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;var tel = $(".tel").val(); if(!TEL_REGEXP.test(tel)){ alert("请验证手机号是否正确"); return; } 是不是没毛病 ?!然而就是不成功!!! 经过打断点查看,解析出来的正则是这样子的, (正则后面的 \d 变成啦 d); 把 反斜杠 \ 解析成转义符啦,这个神奇的操作眼前一亮啊 之后添加成 \\d 就可以啦 正常控制台输出是没有问题的,但是在代码执行的时候就变拉样子,不晓得啥子情况; 来源: https://www.cnblogs.com/mr-shb/p/11585472.html

正则表达式

故事扮演 提交于 2019-11-30 04:20:56
一、RegExp对象 进行验证和查找的API 1、创建对象: (1)用/创建(直接量):var reg=/正则/ig,表达式固定不变时使用 (2)用new创建:var reg=new RegExp(‘正则’,‘ig’),表达式需要动态生成时使用 二、API 1、验证: var bool=reg.test(str) 用正则reg,检测str是否符合正则的格式要求,正则默认只要找到部分内容与正则符合就返回true,需要首尾进行限定 2、查找: 获取每个关键词的内容和位置 reg.exec(str) 在str中查找下一个符合reg要求的关键词的内容和位置,如果反复调用 返回值:arr:['0':'关键词','index':关键词位置] 来源: https://my.oschina.net/u/4165441/blog/3108735