全球主机交流论坛

标题: 来球个正则表达式. [打印本页]

作者: xfspace    时间: 2015-11-15 22:57
标题: 来球个正则表达式.
本帖最后由 xfspace 于 2015-11-15 22:59 编辑

31,00,39,00,32,00,2e,00,31,00,36,00,38,00,2e,00,31,00,33,00,37,00,2e,00,31,00,00,00,00,00
32,00,35,00,35,00,2e,00,32,00,35,00,35,00,2e,00,32,00,35,00,35,00,2e,00,30,00,00,00,00,00


windows注册表导出来的特么变这东西了,不方便运维啊。
提取上面加粗的。。。下划线的换成 . 一点。不知道这里有没有正则高手啊
作者: SKIDROW    时间: 2015-11-15 23:18
本帖最后由 SKIDROW 于 2015-11-15 23:26 编辑

把3([1-9]),00,替换成()的,把2e,00,直接替换成点不就行了

后面那个00,00,00,00应该是填充的,还得判断要不要替换。
作者: a1829    时间: 2015-11-15 23:47
本帖最后由 a1829 于 2015-11-16 00:17 编辑


作者: xfspace    时间: 2015-11-16 00:03
a1829 发表于 2015-11-15 23:47
preg_match_all("/(?:3)(.*)(?:,)/i",$str, $result);

你的啥都没...
作者: xfspace    时间: 2015-11-16 00:04
SKIDROW 发表于 2015-11-15 23:18
把3([1-9]),00,替换成()的,把2e,00,直接替换成点不就行了

后面那个00,00,00,00应该是填充的,还得判 ...

还是元老靠谱
作者: SKIDROW    时间: 2015-11-16 00:13
xfspace 发表于 2015-11-16 00:04
还是元老靠谱

疏忽了一点,[1-9]应该改成[0-9],IP地址是可以设0的。
作者: xfspace    时间: 2015-11-16 00:21
SKIDROW 发表于 2015-11-16 00:13
疏忽了一点,[1-9]应该改成[0-9],IP地址是可以设0的。

再来伸手...提取不了点啊
31,00,39,00,32,00,.,31,00,36,00,38,00,.,31,00,33,00,37,00,.,31,00,00,00,00,00
作者: xfspace    时间: 2015-11-16 00:22
a1829 发表于 2015-11-15 23:47

MJJ还在撸,
作者: a1829    时间: 2015-11-16 00:24
xfspace 发表于 2015-11-16 00:22
MJJ还在撸,


作者: xfspace    时间: 2015-11-16 00:28
a1829 发表于 2015-11-16 00:24

城里人,营养跟的上
作者: a1829    时间: 2015-11-16 00:33
xfspace 发表于 2015-11-16 00:28
城里人,营养跟的上

再这样 不知道 跟不跟的上了 呵呵
作者: xfspace    时间: 2015-11-16 00:39
a1829 发表于 2015-11-16 00:33
再这样 不知道 跟不跟的上了 呵呵

少撸点。
帮我改进下这个呗3([0-9]),00,提取不了点
31,00,39,00,32,00,.,31,00,36,00,38,00,.,31,00,33,00,37,00,.,31,00,00,00,00,00
作者: SKIDROW    时间: 2015-11-16 10:04
本帖最后由 SKIDROW 于 2015-11-16 10:05 编辑
xfspace 发表于 2015-11-16 00:39
少撸点。
帮我改进下这个呗3([0-9]),00,提取不了点
31,00,39,00,32,00,.,31,00,36,00,38,00,.,31,00,33, ...

  1. 2e,00,
复制代码
替换成点的话不应该出现
  1. .,
复制代码

你可能少了后面那个,

我用的EditPlus和php测试过
  1. 31,00,39,00,32,00,2e,00,31,00,36,00,38,00,2e,00,31,00,33,00,37,00,2e,00,31,00,00,00,00,00
复制代码

纯文本替换
  1. 2e,00,
复制代码
后变成
  1. 31,00,39,00,32,00,.31,00,36,00,38,00,.31,00,33,00,37,00,.31,00,00,00,00,00
复制代码

正则表达式替换
  1. 3([0-9]),00,
复制代码
为$1(preg_replace("/3([0-9]),00,/", "$1", $input);)就变成了
  1. 192.168.137.100,00,00,00
复制代码
,后面是填充长度的00,00,00,00(四组,两位)
作者: xfspace    时间: 2015-11-16 11:39
SKIDROW 发表于 2015-11-16 10:04
替换成点的话不应该出现
你可能少了后面那个,

谢谢~
作者: xfspace    时间: 2015-11-16 11:49
SKIDROW 发表于 2015-11-16 10:04
替换成点的话不应该出现
你可能少了后面那个,


想到个方法,吧00,填充干掉。*在正则表达式是不是代表循环多次?
  1. $d = preg_replace("/00,*/", " ", $c);
  2. echo $d;
复制代码





欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4