[24/Feb/2011:11:15:04 +0800]`xming`id=922`mobile=0`channel=3`type=2`charge_id=1226`payment=1065`business=8`linkid=S_1298517285_1725223675`return_url=`notice_status=00002
一个这样的字符串
要匹配这样的字符串
这个是一行 是log里面的一条记录
其实就是数据库的一条记录现在要匹配这样的记录
同时要能提取id ,charge_id,payment,notice_status
csdn没正则区
咱就找js了
找cj大哥 O(∩_∩)O~
一个这样的字符串
要匹配这样的字符串
这个是一行 是log里面的一条记录
其实就是数据库的一条记录现在要匹配这样的记录
同时要能提取id ,charge_id,payment,notice_status
csdn没正则区
咱就找js了
找cj大哥 O(∩_∩)O~
解决方案 »
- Extjs4 grid的store取不到数据
- 如何得到指定时间的不同时区时间?
- Javascript二维数组如何进行push()?
- 关于timer计时器的问题.大家给回答下想早点回家过节啊!
- 如何重写javascript中的focus()方法?
- 关于使用Javascript读写Cookie的问题
- 为什么这么奇怪啊??
- sunbeamy(阳光灿烂的深夜) 请进
- JavaScript迷惑问题之十三:如何在点击连接时明确地将单击事件和双击事件区分开?
- table合并相同单元格的问题 谁能解决,感激不尽,都来看看啊
- 请问Js中alert函数和document.write之间的区别??请解释下面的情况
- js 中单引号报错的问题
id=(\d+)\s+.*?charge_id=(\d+).*?payment=(\d+).*?notice_status=(\d{5})$1至$4
神马语言?
JS还是PHP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript">
var str = '[24/Feb/2011:11:15:04 +0800]`xming`id=922`mobile=0`channel=3`type=2`charge_id=1226`payment=1065`business=8`linkid=S_1298517285_1725223675`return_url=`notice_status=00002';
//id ,charge_id,payment,notice_status
var reg = /id=([^`]+).+?charge_id=([^`]+).+?payment=([^`]+).+?notice_status=([^`]+)/i;
var tmp = str.match(reg);
alert('id=' + RegExp.$1 + ',charge_id=' + RegExp.$2+ ',payment=' + RegExp.$3+ ',notice_status='+RegExp.$4);
</script>
</head>
<body>
</body>
</html>
js版的。似乎没什么可说的
不知道你的grep熟悉不,如果熟悉的话试试看
如果不行再商量同时
1、php支持命名分组,你可以加进去
2、php支持占有优先,所以你可以考虑在适当的地方用++来代替+以提高速度
我不知道你说的是啥 o(╯□╰)o还有上面所有的都有个问题
第一个匹配id匹配到了后面的charge_id
囧怎么办?
我没有php的测试引擎 发个工具给我?
php的环境安装很麻烦的
囧
已经搞定$str="[24/Feb/2011:11:15:04 +0800]`xming`id=922`mobile=0`channel_id=3`channel_type=2`charge_id=1226`payment=1065`business_id=8`business_linkid=S_1298517285_1725223675`return_url=`notice_status=00002";
$reg ='/\[.*\].*`id=(\d+).*charge_id=(\d+).*payment=(\d+).*notice_status=(\d+)$/';
preg_match($reg,$str,$matches);
echo $matches[0]."<br/>";
echo $matches[1]."<br/>";
echo $matches[2]."<br/>";
echo $matches[3]."<br/>";
echo $matches[4]."<br/>"; 我在正则的第一个id前面加了个“`”
preg_match_all是否能一次能把整个页面的对应标签全部都给匹配了!
既然很多条这种数据不如常识用preg_match_all一次读取出来,保存到数组里供使用,用fwrite逐行读取,再匹配也可以,但是感觉可能没有一次性读取来得爽!
怎么做啊??
我用上面的正则 不行啊该怎么改?
alert(test.replace(/[^_]*(id=[\d]+)[\s|\S]*(charge_id=[\d]+)[\s|\S]*(payment=[\d+])[\s\S]*(notice_status=[\d+])/g,"$1 $2 $3 $4"));
/\S+\'id=(\d+)\'\S+charge=(\d+)\S+payment=(\d+)\Snotice_status=(\d+)\S/