regex 检查句子中是否存在特定字符串

enxuqcxy  于 2023-01-27  发布在  其他
关注(0)|答案(3)|浏览(160)

我尝试使用if条件检查句子中一行中的某个字符串,但没有得到预期的输出。我也尝试了Regex模式,但也没有帮助。有人能帮我吗?我的字符串值每次都在更改,所以不确定这是否是问题所在。

r="Carnival: monitor service-eu Beta cloudwatch_module" 
  if "Carnival: monitor service-eu Beta" in r:
            test_string="EU"
            test_string1="eu"
        elif "Carnival: monitor service-na Beta" in r:
            test_string="NA"
            test_string1="na"
        elif "Carnival: monitor service-fe Beta" in r:
            test_string="FE"
            test_string1="fe"
        else:
            print("None found")

正则表达式是这样的。
但这也不管用。

re_pattern = r'\b(?:service-eu|Beta|monitor|Carnival)\b'
new_= re.findall(re_pattern, r)
new1_=new_[2]
hfyxw5xn

hfyxw5xn1#

如果没有必要使用这个 short_description 函数,我建议您使用 find 函数:

if r.find("Carnival: monitor service-eu Beta") != -1:
 test_string="EU"
 test_string1="eu"
elif r.find("Carnival: monitor service-na Beta") != -1:
 test_string="NA"
 test_string1="na"
elif r.find("Carnival: monitor service-fe Beta") != -1:
 test_string="FE"
 test_string1="fe"
else:
 print("None found")
n6lpvg4x

n6lpvg4x2#

我不能100%确定我理解你的问题,但希望这能有所帮助:

import re

def get_string(r):
    return re.findall(r"service-[a-z]{2}",r)[0][-2:]

get_string("Carnival: monitor service-na Beta")
>>> 'na'
get_string("Carnival: monitor service-fe Beta")
>>> 'fe'

这里,[a-z]{2}表示包含长度为2的小写字母的任何单词。

q0qdq0h2

q0qdq0h23#

您可以使用具有捕获组和.upper()作为组值的模式。

\bCarnival: monitor service-([a-z]{2}) Beta\b

请参见regex 101 demoPython demo上的捕获组值。
示例

import re

pattern = r"\bCarnival: monitor service-([a-z]{2}) Beta\b"
r = "Carnival: monitor service-eu Beta cloudwatch_module"
m = re.search(pattern, r)
if m:
    test_string1 = m.group(1)
    test_string = test_string1.upper()

    print(test_string)
    print(test_string1)

产出

EU
eu

相关问题