2012-02-03 5 views
1

У меня есть предложение, как этотзамена с использованием регулярных выражений питона

s = " zero/NN divided/VBD by/IN anything/NN is zero/NN" 

мне нужно, чтобы заменить все слова с тегами только тегами. Вывод должен быть

s = "NN VBD IN NN is NN" 

Я попытался с помощью регулярных выражений заменить как этот

tup = re.sub(r"\s*/$" , "", s) 

, но это не дает мне правильный вывод. Пожалуйста, помогите

ответ

3

Это дает выход вы хотите:

tup = re.sub(r"\b\w+/" , "", s) 

\b сопрягает границу слова, а затем \w+ по меньшей мере, одного символа слова (a-zA-Z0-9_) и, по меньшей мере, косой черты.

+0

это работает очень хорошо! Спасибо большое !! – dheeraj

0

Группа символов \s соответствует всем пробельным символам, которые не кажутся вам нужными. Я думаю, вы хотите другой случай, все символы без пробелов. Вы также можете быть более конкретным, что тег, например:

tup = re.sub(r"\S+/([A-Z]+)" , r"\1", s) 

Это заменяет все без пробельных символов, а затем через слэш, а затем последовательность заглавных букв с только заглавными буквами.

2

попробовать:

tup = re.sub(r"[a-z]*/" , "", s) 

In [1]: s = " zero/NN divided/VBD by/IN anything/NN is zero/NN" 
In [2]: tup = re.sub(r"[a-z]*/" , "", s) 
In [3]: print tup 
NN VBD IN NN is NN 
+0

Это почти то же самое, что и в первом ответе, но это можно изменить как [A-z] для изменения заглавных букв. – dheeraj

0
tup = re.sub(r"\b\w+/(\w+)\b", r"\1", s) 

по обе стороны от моего регулярного выражения является \ Ъ смысл «граница слова», а затем по обе стороны от «/» я есть \ W + означающие «символы слова». Справа мы группируем их, помещая их в круглые скобки.

Второе выражение r "\ 1" означает. «первая группа», которая получает информацию в круглых скобках.

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