2013-03-16 2 views
1

конструктора регулярного выражения для извлечения первых две цифр подстроки которых:Регулярного выражения связаны с Двойником обходных

  1. End с письмом
  2. Начните с 2

Так от "234b342d3", результат матча должен быть:
23 (от 234b)
2d (от 2d)

Приблизительный ответ "(?=1.*)[a-zA-Z]", но похоже, что он не работает.

Буду признателен за каждый ваш ответ.

+2

Ваш пример не заканчивается с письмо.Пожалуйста, дайте немного более подробную информацию, например. о том, как создается результат вашего матча. – speakr

+0

Я имею в виду извлечение некоторой подстрочной формы «234b342d3», которая имеет букву. результат «23» - это первые две цифры строки «234b». Результат «2d» - это первые две цифры строки «2d». – javie

ответ

0

Я предполагаю, что вы имели в виду (?=2.*)....

(?=2.*) означает, что следующие символы: 2, за которым следует одно или несколько предметов. Но регулярное выражение говорит следующий символ должен быть [a-zA-Z], так что ничего не будет когда-либо соответствовать (так как символ не может быть 2 и [a-zA-Z] одновременно.

Простое удаление смотреть вперед (2.*[a-zA-Z]) является шагом в правильное направление, но в следующем по-прежнему не так:

  • не будет ставить первые 2 символа в группе, так что вы можете извлечь его
  • Жадный соответствия (.* будет соответствовать жадностью, так 234b342d вместо того, чтобы просто 234b , а 2d не будет соответствовать она уже была покрыта предыдущим матчем)

Так положил первые 2 символа в скобках, чтобы положить его в группу и добавить нежадным соответствия (.*? вместо .*) ((2.).*?[a-zA-Z]). Но теперь:

  • 2 следует буква не будет соответствовать

Так что нам нужно добавить Двойник позади, чтобы объяснить это.

Итак, наконец, мы получаем:

(2.)((?<=[a-zA-Z])|.*?[a-zA-Z]) 

А затем извлечь первую группу (как это сделать, зависит от языка).

(2.) гарантирует, что он начинается с 2 и помещает первые 2 символа в группу.
(?<=[a-zA-Z]) это посмотреть-за учитывать 2d в вашем примере (а 2 с последующим письмом)
.*? является нежадным соответствие
[a-zA-Z] - средство заканчивается символом

+0

Спасибо большое! Я, наконец, знаю, как выглядят вокруг. Это замечательный день. – javie

+0

Все не понимают, что взгляды должны читать этот пост. – javie

 Смежные вопросы

  • Нет связанных вопросов^_^