2013-02-11 3 views
0

У меня есть это регулярное выражение: W в регулярное выражение не соответствует

s/[abgn][\W].*/ 

Я хочу, чтобы соответствовать этим Примеры:

  • aMXyZ
  • б
  • г/S/d% k/k

Я не хочу соответствовать:

  • aM.X.y.Z
  • спам

Я надеюсь, что вы видите, что, если я хочу, чтобы соответствовать строке, то второй символ не должен быть словом символ. Но мое регулярное выражение не работает. Он соответствует, хотя есть \ W. Я не знаю, почему это не соответствует.

+0

Почему вы только что получили 'abgn' в классе персонажа? –

+0

, потому что первой строке разрешено только a, b, g или n. (IEEE 802.11) – Peter

+0

@PeterI Ваше регулярное выражение работает для каждого указанного примера, кроме ** b **, и его решение уже существует. –

ответ

0

Я не уверен, почему вы использовали с/в начале, но вот выражение, которое должно работать для вас

[abgn](?!\w)[\w\.]* 

(?! \ ж) является отрицательным выражением опережения это означает, что [abgn] не должно сопровождаться \ W

это должно соответствовать aMXyZ б

и не аб аХ

+0

Я использовал s/в начале, потому что вы используете regex в perl. (Я использую perl ^^) – Peter

+0

ОК, затем добавьте s/и попробуйте. Я только что изменил exp, потому что (?! \ W) не отображался. Он должен работать, если жемчуг поддерживает отрицательный внешний вид. – Srinidhi

+0

Хмм. Он не соответствует 'g' . Протестировано здесь: http://gskinner.com/RegExr/ – Peter