regexp,用于搜索和替换从关键字开始的任何字符串



Hi希望创建一个regexp,它接受下面的字符串并屏蔽从"开始的所有位置的所有ID;梦想";。

s = """Cli house create --house-id dream1.house.hc1.area.aaaaaaaah454432fg7zf5h2ufqxvfhzqokkaufgf5znua36p4puwnog7akcq --zip-code 123456 --sub-zip-id dream1.zip.zc1.area..aaaaaaaawjdrauwdwzn4kfsma7bomq26l3zjeqmx6qsgihhr4kadmbgngxlq --type victorian"""

并将其转换为

s = """Cli house create --house-id dream1.house.hc1.area.<ID> --zip-code 123456 --sub-zip-id dream1.zip.zc1.area..<ID> --type victorian"""

s=re.sub(r〃(dream\w*.+((?=*.((.+(〃"1〃;,s(

但它只在ID结束时工作,即

dreamCli house create --house-id dream1.house.hc1.area.aaaaaaaah454432fg7zf5h2ufqxvfhzqokkaufgf5znua36p4puwnog7akcq

id将始终以这种格式

梦想<数字>lt;字符串>lt;字符串>lt;字符串>。。。

您可以匹配

(bdreamS*.)S*
  • (捕获组1
    • bdreamS*.一个单词边界,匹配dream,直到最后一个没有匹配空白字符的点
  • )关闭组
  • S*匹配0+非空白字符(在不匹配空白字符的情况下匹配后面的内容(

并替换为捕获组,然后是<ID>

1<ID>

Regex演示

示例代码

import re
regex = r"(bdreamS*.)S*"
test_str = "Cli house create --house-id dream1.house.hc1.area.aaaaaaaah454432fg7zf5h2ufqxvfhzqokkaufgf5znua36p4puwnog7akcq --zip-code 123456 --sub-zip-id dream1.zip.zc1.area..aaaaaaaawjdrauwdwzn4kfsma7bomq26l3zjeqmx6qsgihhr4kadmbgngxlq --type victorian"
result = re.sub(regex, r"1<ID>", test_str)
print(result)

输出

Cli house create --house-id dream1.house.hc1.area.<ID> --zip-code 123456 --sub-zip-id dream1.zip.zc1.area..<ID> --type victorian

相关内容