1

各条件の間にギャップがある場合、いくつかの異なるものに一致するように perl 互換の正規表現を書くのに問題があります。何を見つけてほしいかを説明すると、より理にかなっています

条件

  1. /世界/
  2. 一文字
  3. ダッシュまたはアンダースコア
  4. 一文字
  5. 単一の期間
  6. 三文字か四文字

私が抱えている問題は、条件 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
4

1 に答える 1

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}$>
于 2013-04-05T17:07:45.447 に答える