正则表达式忽略了空白字符

时间:2019-03-15 11:13:11

标签: regex

我想向您展示我所遇到的问题的解决方法,也许您可​​以帮助我解决特定的问题,甚至可以改变方法。

我有一些这样的日志行,以下面两个为例:

00:00:02.673: INFO: sesison1::logging : logSessionStarted(ch...")
EntrySuccessfull::execute

如您所见,有些带有时间戳,有些没有时间戳,问题是我想在第一次出现'::'之前获取所有数据。

第二种情况现在很简单,类似这样的工作方式:

(.*)(?=::)

返回所有数据集:

00:00:02.673: INFO: sesison1
EntrySuccessfull

很明显,对于第一行,这不是我想要的。我想获得sesision1,所以我尝试做一个类似lookbehind的操作,直到找到空格:

(?<=\s)(.*)(?=::)

所以最后,我可以做类似find'::'的操作,然后返回到空格或字符串的开头,但是第二次更改将返回完全相同的结果,例如忽略sesision1之前的空格。

有没有更好的方法或有什么问题?

PD使用记事本++完成的所有测试

2 个答案:

答案 0 :(得分:2)

<?php include "config.php"; /* Getting post data */ $rowid = $_POST['rowid']; $rowperpage = $_POST['rowperpage']; /* Count total number of rows */ $query = "SELECT count(*) as allcount FROM employee"; $result = mysqli_query($con,$query); $fetchresult = mysqli_fetch_array($result); $allcount = $fetchresult['allcount']; /* Selecting rows */ $query = "SELECT * FROM employee ORDER BY id ASC LIMIT ".$rowid.",".$rowperpage; $result = mysqli_query($con,$query); $employee_arr = array(); $employee_arr[] = array("allcount" => $allcount); while($row = mysqli_fetch_array($result)){ $empid = $row['id']; $empname = $row['emp_name']; $salary = $row['salary']; $employee_arr[] = array("empid" => $empid,"empname" => $empname,"salary" => $salary); } /* encoding array to json format */ echo json_encode($employee_arr); 匹配单词边界,因此您可以使用 <script type="text/javascript"> // Total number of rows visible at a time var rowperpage = 5; $(document).ready(function(){ getData(); $("#but_prev").click(function(){ var rowid = Number($("#txt_rowid").val()); var allcount = Number($("#txt_allcount").val()); rowid -= rowperpage; if(rowid < 0){ rowid = 0; } $("#txt_rowid").val(rowid); getData(); }); $("#but_next").click(function(){ var rowid = Number($("#txt_rowid").val()); var allcount = Number($("#txt_allcount").val()); rowid += rowperpage; if(rowid <= allcount){ $("#txt_rowid").val(rowid); getData(); } }); }); /* requesting data */ function getData(){ var rowid = $("#txt_rowid").val(); var allcount = $("#txt_allcount").val(); $.ajax({ url:'getEmployeeInfo.php', type:'post', data:{rowid:rowid,rowperpage:rowperpage}, dataType:'json', success:function(response){ createTablerow(response); } }); } /* Create Table */ function createTablerow(data){ var dataLen = data.length; $("#emp_table tr:not(:first)").remove(); for(var i=0; i<dataLen; i++){ if(i == 0){ var allcount = data[i]['allcount']; $("#txt_allcount").val(allcount); }else{ var empid = data[i]['empid']; var empname = data[i]['empname']; var salary = data[i]['salary']; /* This is is the place where they get printed in HTML file */ $("#emp_table").append("<tr id='tr_"+i+"'></tr>"); $("#tr_"+i).append("<td align='center'>"+empid+"</td>"); $("#tr_"+i).append("<td align='left'>"+empname+"</td>"); $("#tr_"+i).append("<td align='center'>"+salary+"</td>"); } } } </script>

这从单词边界开始,并且匹配多个非空白字符,直到到达\b

答案 1 :(得分:0)

使用(\S+)(?=::),您可以同时获得两个匹配而没有空匹配。请检查here