python - 用正则表达式替换不需要的字符
问题描述
我有这个字符串,它在一行上:
https[:]//sometest[.]com,http[:]//differentt,est.net,https://lololo.com
请注意,我故意放入,
第二个 URL。我正在尝试替换相遇的,
地方。http(s)
到目前为止,我试过这个:
pattern_src = r"http(.*)"
for i, line_src in enumerate(open("/Users/test/Documents/tools/dump/email.txt")):
for match in re.finditer(pattern_src, line_src):
mal_url = (match.group())
source_ = mal_url
string = source_
for ch in ["[" , "]"]:
for c in [","]:
string = string.replace(c,"\n")
string = string.replace(ch,"")
with open("/Users/test/Documents/tools/dump/urls.txt", 'w') as file:
file.write(string)
print(string)
但是您可以清楚地看到它将替换,
字符串中的所有内容。所以我的问题是,我将如何替换,
之前的http
并将每个http
URL 都放在一个新行上?
解决方案
>>> s = 'https[:]//sometest[.]com,http[:]//differentt,est.net,https://lololo.com'
>>> print(re.sub(r',(?=http)', '\n', s))
https[:]//sometest[.]com
http[:]//differentt,est.net
https://lololo.com
,(?=http)
,
仅当它后跟. 时才会匹配http
。这(?=http)
是一个积极的前瞻断言,它允许在不消耗这些字符的情况下检查条件。
请参阅参考资料 - 这个正则表达式是什么意思?有关环视或我的书的详细信息:https ://learnbyexample.github.io/py_regular_expressions/lookarounds.html
推荐阅读
- python - 使用 Python 数组存储数据(HAR-RV 信用风险模型实现)
- cassandra - Cassandra:地图类型列中的关键级别访问
- python-2.7 - 为什么我能够成功返回一个大的 np.float128 但是当我尝试在 numpy 中创建相同的 np.float128 时,我只得到了 inf?
- generics - 为什么我不能在通用枚举类上调用 .values()?
- r - 如何一个接一个地绘制多个图形
- swift - 我有一个新的 UIViewController 和新类,但我无法在 Xcode 10 中将两者关联起来
- java - java swing应用架构如何组织?
- python - pandas 重采样语法示例
- r - 数据集未加入
- angular - 是否可以在 NgClass 指令中使用正则表达式?