Подберите слова, которые не начинаются с определенной буквы, используя регулярное выражение - PullRequest
0 голосов
/ 16 мая 2018

Я изучаю регулярное выражение, но не смог найти правильное регулярное выражение в python для выбора символов, которые начинаются с определенного алфавита.

Пример ниже

text='this is a test'
match=re.findall('(?!t)\w*',text)

# match returns
['his', '', 'is', '', 'a', '', 'est', '']

match=re.findall('[^t]\w+',text)

# match
['his', ' is', ' a', ' test']

Ожидается: ['is','a']

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы почти на правильном пути.Вы только что забыли токен \b (граница слова):

\b(?!t)\w+

Живая демоверсия

0 голосов
/ 16 мая 2018

с регулярным выражением

Используйте отрицательный набор [^\Wt], чтобы сопоставить любой буквенно-цифровой символ, который не является t . Чтобы избежать совпадения подмножеств слов, добавьте метасимвол границы слова, \b, в начале вашего шаблона.

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

import re

text = 'this is a test'
match = re.findall(r'\b[^\Wt]\w*', text)

print(match) # prints: ['is', 'a']

См. Демо здесь .

Без регулярных выражений

Обратите внимание, что это также возможно без регулярных выражений.

text = 'this is a test'
match = [word for word in text.split() if not word.startswith('t')]

print(match) # prints: ['is', 'a']
...