Точное совпадение ключевых слов в строке - PullRequest
0 голосов
/ 30 ноября 2018

Я знаю, что этот вопрос задавался почти сто раз в переполнении стека, но после выполнения большого количества поиска и не найдя ответа, я задаю этот вопрос.

Я ищу, чтобы найти точное слово из строк что-то вроде ниже.

'svm_midrangedb_nonprod:svm_midrangedb_nonprod_root'
'svm_midrangedb_prod:svm_midrangedb_prod_root'

Я хочу выполнить поиск только по 'prod', но на выходе получим 'prod' и 'nonprod'.

Вот код, который я использую:

re.search(r"\wprod\w", in_volumes.json()[i]['name'].split(":")[2].lower())

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Вы должны создать правила, чтобы они не соответствовали nonprod, но соответствовали prod.

Например, возможно, вы можете сделать это так, чтобы, если есть n инфронт prod, вы исключили егокак это: [^n]prod\w.

Или, может быть, некоторые данные имеют n перед продуктом, и вы хотите сохранить его.Затем вы хотите исключить, если есть non infront от prod, например: \w*(?<!non)prod\w*.

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

0 голосов
/ 30 ноября 2018

Это нормально, потому что ваше регулярное выражение говорит, что вы хотите строку, содержащую "prod", чтобы решить эту задачу очень просто, вы можете сделать то же самое, что и вы, но следуйте re.search(r"\w_prod\w", in_volumes.json()[i]['name'].split(":")[2].lower()) Я просто добавляю существующий символ _в вашей целевой строке

...