Найти, если строка содержит подстроку Python - PullRequest
0 голосов
/ 27 октября 2019

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

это то, что я пробовал до сих пор:

import json
from pprint import pprint
import re

# Load json file
json_data=open('alerts.json')
jdata = json.load(json_data)
json_data.close()

# Input for users
input = 'Check Liveness in dsadakjnflkds.server'

# Search in json function
def searchInJson(input, jdata):
    for i in jdata:
        # checks if the input is similiar for the alert name in the json
        print(i["alert_regex"])
        regexCheck = re.search(i["alert_regex"], input)

        if(regexCheck):
            # saves and prints the confluence's related link
            alert = i["alert_confluence"]
            print(alert)
            return print('Alert successfully found in `alerts.json`.')
    print('Alert was not found!')

searchInJson(input,jdata)

то, что я хочу, чтобы мое регулярное выражение проверял, только если строка содержит «Проверка живучести»

Есть 2 необязательные проблемы: 1. возможно, мое регулярное выражение неверно внутри i ["alert_regex"] (я пытался сделать то же самое с javascript, и это сработало) 2. мой код неверен.

Anпример моего файла JSON:

[
    {
        "id": 0,
        "alert_regex": "check (.*) Liveness (.*)",
        "alert_confluence": "link goes here"
    }
]

1 Ответ

0 голосов
/ 28 октября 2019

У вас две проблемы. Весь ваш код может быть уменьшен до:

import re
re.search("check (.*) Liveness (.*)", 'Check Liveness in dsadakjnflkds.server')

Это не будет соответствовать, потому что:

  1. Вам необходимо установить "нечувствительность к регистру" в поиске, потому что checkиначе не будет совпадать с Check.
  2. check (.*) Liveness заканчивается двумя пробелами между check и Liveness, если (.) соответствует пустой строке.

Youнужно:

re.search("check (.*)Liveness (.*)", 'Check Liveness in dsadakjnflkds.server', flags=re.I)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...