2016-07-30 5 views
-1

Я хочу разделить утверждения точками, используя регулярное выражение в python, исключая определенные точки внутри угловых скобок. например: Оригинальное заявление:Как разбить оператор на основе точек ('.'), Исключая точки внутри угловых скобок (< . >), используя регулярные выражения в python?

'my name 54. is <not23.> worth mentioning. ok?' 

Я хочу разделить его на следующие предложения:

Statement 1 : 'my name 54' 
Statement 2 : ' is <not23.> worth mentioning' 
Statement 3 : ' ok' 

Я попытался

re.split(r'[^<.>]\.','my name 54. is <not23.> worth mentioning. ok?') 

Но, это не игнорируя точку внутри <> , поэтому в результате получаем:

['my name 5', ' is <not23', '> worth mentioning', ' ok?'] 
+1

Где твоя regex, и в чем проблема с этим? – jonrsharpe

+0

Это в описании. –

+2

Нет, это задача, которую вы пытаетесь выполнить. Где ** ваша попытка завершить его **? – jonrsharpe

ответ

1

Split по следующему регулярному выражению:

\.(?![^<]*>) 

Live demo

import re 

str = 'my name 54. is <not23.> worth mentioning. ok?' 
regex = re.compile(r"\.(?![^<]*>)") 
arr = regex.split(str) 

print(arr) 
+0

Прохладный. Благодарю. Оно работает. Итак, можем ли мы сказать, что выражение шаблона сопровождалось?! в регулярном выражении будет игнорироваться из рассматриваемого выражения? –

+0

'(?! ...)' создает отрицательный lookahead, который утверждает, что текущая позиция (предшествующая буквенному '.') не будет сопровождаться'> '@AdityaKuls – revo

1

Легко, если вы можете пользователя новее regex module (он обеспечивает (*SKIP)(*FAIL) функциональность):

import regex as re 

string = 'my name 54. is <not23.> worth mentioning. ok?' 
rx = re.compile(r"<[^>]*>(*SKIP)(*FAIL)|\.") 

parts = rx.split(string) 
print(parts) 
# ['my name 54', ' is <not23.> worth mentioning', ' ok?'] 
+0

Как установить и использовать новый модуль регулярных выражений. Я получаю следующую ошибку при использовании вашего предложения: «sre_constants.error: ничего не повторять» –

+0

'pip install regex' должно быть хорошо. – Jan