需要PCRE Regex帮助

时间:2013-04-05 16:50:21

标签: regex perl pcre

当每个条件之间存在间隙时,我无法编写perl兼容的正则表达式以匹配一些不同的东西。当我解释我想要它找到什么时,它会更有意义

条件

  1. /世界/
  2. 一封信
  3. 短划线或下划线
  4. 一封信
  5. 一段时间
  6. 三或四个字母
  7. 我遇到的问题是我不知道如何编写表达式,使得条件#1和#2之间可能存在间隙。条件#2 - #4可以重复,但并非总是如此。

    我一直在使用多个在线正则表达式测试人员,但我无法得到匹配,我不确定我做错了什么。我认为正则表达式正在寻找/world/x_x/world/y-y而不是“向前看”以匹配“字母短信”或“字母下划线字母”模式。

    当前正则表达式

    /world/([a-z](-|_)[a-z]){1,}\.[a-z]{3,4}$
    

    所需匹配(当前不匹配)

    hxxp://armassimchilzeispreu.blackjackipad.com/world/activate_available.jar
    
    hxxp://chubfaceddamsel0.affittobarcheavela.it/world/eternal_threat-clearing.html
    
    hxxp://offdestroyengarabitar.freebookofraslot.com/world/bonus-middle-marathon.pdf
    

1 个答案:

答案 0 :(得分:3)

我想你想要这个

use strict;
use warnings;

while (<DATA>) {
  chomp;
  print "OK $_\n" if m</world/[a-z]+(?:[_-][a-z]+)+\.[a-z]{3,4}$>;
}

__DATA__
hxxp://armassimchilzeispreu.blackjackipad.com/world/activate_available.jar
hxxp://chubfaceddamsel0.affittobarcheavela.it/world/eternal_threat-clearing.html
hxxp://offdestroyengarabitar.freebookofraslot.com/world/bonus-middle-marathon.pdf

或者只是

m</world/[a-z-_]+\.[a-z]{3,4}$>