2015-04-24 2 views
-1

У меня есть строка ABC No.BC2345GFSD234CD. Я пытался написать regex в python, чтобы извлечь BC2345GFSD234CD. У меня было еще несколько выражений, от которых все зависит. Я пробовал что-то вроде ^[^\.]*\.(?P<number>[A-Z0-9]*).*$. Есть ли элегантный способ сделать это?написать регулярное выражение для комбинации колпачков и цифр

EDIT: У меня есть файл со многими regex. Существует еще одна программа, которая подбирает это регулярное выражение и использует re.match для некоторых строк. Это общая программа, и мне нужно поместиться в моем регулярном выражении. Также мне нужно использовать re.match(), а не re.search().

еще несколько строк может быть: -

'< lot_of_spaces> ABC No.BC2345GFSD234CD < lot_of_spaces>'

< 'lot_of_spaces> нет-ABC.BC2345GFSD234CD < lot_of_spaces>'

В каждом я должен извлечь-BC2345GFSD234CD

+3

Ну, есть много сложностей там, что, кажется, не требуются по вашему описанию или вашему примеру , но, по-видимому, вы написали его по какой-то причине, которую вы не поделили с нами, поэтому трудно понять, что еще вы могли бы написать вместо этого, чтобы соответствовать требованиям, которые мы не знаем. – abarnert

+0

В частности: почему вы хотите сопоставить начало строки, за которой следует 0 или более символов, за которыми следуют 0 или более неточечных символов, за которыми следует точка, а не, скажем, символ точки? И почему вы хотите совместить 0 или более символов, за которыми следует конец строки, а не только что-нибудь? – abarnert

+0

Регулярное выражение, которое вам нужно, зависит от ваших данных и того, как эти экземпляры отличаются. Вы только дали довольно короткую часть текста. и, увидев ваш '. * $', возникает вопрос, есть ли еще. –

ответ

1

Нет необходимости в регулярном выражении.

>>> "ABC No.BC2345GFSD234CD".split('.')[-1] 
'BC2345GFSD234CD' 

ИЛИ

Если вы хотите действительно хотите использовать регулярные выражения, то вы можете попробовать это. Это будет соответствовать всем неточным символам, существующим в последний раз.

>>> re.search(r'[^.]*$', "ABC No.BC2345GFSD234CD").group() 
'BC2345GFSD234CD' 
+0

Я не объяснял в вопросе, но моя программа - это что-то вроде файла со списком 'regex'. Другой файл берет строки и 'match' регулярное выражение (не ищет регулярное выражение). –

+1

@BarunSharma «Я не объяснял в вопросе» - перефразируйте свой вопрос и включите его, чтобы мы и будущие пользователи могли понять ваш вопрос. –

0

Если это последние 15 символов, которые нужны просто нарезать строку:

>>> 'ABC No.BC2345GFSD234CD'[-15:] 
'BC2345GFSD234CD' 
Смежные вопросы