试图用另一个词替换特定词,但我没有得到确切的结果。有没有使用正则表达式的解决方案?

Trying to replace the Specific word with another word but i didn't get exact result. Is there any resolution using regex?

我想将 'REF ' 标签替换为 'REF:'。

请检查以下代码:-

def test():
    str_data = "REF PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY"
    tag_list = ["REF ", "BMS:", "REF NO :"]
    for each_value in tag_list:
        if each_value[-1] == " ":
            print(each_value)
            str_data = str_data.replace(each_value, each_value[:-1] + ":")
            print(str_data)

test()

我试图解决它,但得到了以下输出。

Original String = "REF PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY"

My Result = REF:PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF:NO : MUMBAI UNIVERSITY

Expected Result = REF:PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY

有什么办法可以解决吗?有正则表达式吗?

首先将您的 REF NO: 更改为 ***,然后再替换回 REF NO: 这是你的答案:

def test():
    str_data = "REF PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY"
    str_data = str_data.replace("REF NO :", '***').replace("REF ", 'REF: ').replace('***', 'REF NO :')
    return str_data
print(test())

用正则表达式很容易说 "match "REF " but only if it is not followed by "NO :"":

import re

str_data = re.sub(r'REF (?!NO :)', 'REF:', str_data)

否定前瞻(?!NO :)意味着如果此时的文本匹配NO :,则不匹配。

试试这个

def test():
    str_data = "REF PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY"
    str_data = str_data.split("REF NO :")
    for index,data in enumerate(str_data):
        if "REF " in data:
            data = data.replace("REF ", "REF :")
            print(data)
            str_data[index] = data


    print("REF NO :".join(str_data))

test()

这将以正则表达式格式修复

def test():
    import re
    str_data = "REF PUNE UNIVERCITY BMS:KOLHAPUR UNIVERSITY REF NO : MUMBAI UNIVERSITY"
    str_data = re.sub(r'\bREF\s+(?!\s*NO\s+:)', 'REF:', str_data)
    return str_data
print(test())