python - Python:如果使用正则表达式从另一个字符串中提取子字符串
问题描述
我想使用 regex 从 url 中提取一个值,如果存在,
我的字符串:
string = "utm_source=google&utm_campaign=replay&utm_medium=display&ctm_account=4&ctm_country=fr&ctm_bu=b2c&ctm_adchannel=im&esl-k=gdn|nd|c427558773026|m|k|pwww.ldpeople.com|t|dm|a100313514420|g9711440090"
从这个字符串中,我想提取: c427558773026 ,要提取的值将始终以 c 开头并具有此模式 |c*|
import re
pattern = re.compile('|c\w|')
pattern.findall(string)
在我的情况下结果是没有的,我使用的是 python 2.7
解决方案
\|
您可以使用环视在左侧和右侧断言一个管道(不是转义) ,并匹配一个c
字符后跟 1 个以上的数字\d+
(?<=\|)c\d+(?=\|)
import re
string = "utm_source=google&utm_campaign=replay&utm_medium=display&ctm_account=4&ctm_country=fr&ctm_bu=b2c&ctm_adchannel=im&esl-k=gdn|nd|c427558773026|m|k|pwww.ldpeople.com|t|dm|a100313514420|g9711440090"
print(re.findall(r"(?<=\|)c\d+(?=\|)", string))
或者像@Wiktor Stribiżew建议的那样,使用一个捕获组忽略后面的内容:
\|(c\d+)(?=\|)
推荐阅读
- cloud-foundry - Pivotal Cloud Foundry 版本字符串空错误
- python - 如何删除连接 matplotlib.pyplot.plot 中中断点的线
- function - wix-fetch vs wix-http-functions
- java - 替换字符串中的字符而不使用 if else
- apache - google.com 的 Apache 反向代理(仅用于测试)
- r - 在 R 中查找具有 NA 单元格的 .csv 文件的列平均值时出错
- c - 如何查看数字是否在数组中具有相同的数字?
- linux - 从 shell 向 CloudWatch 发送事件
- javascript - Javascript 如何从 ADODB 记录集中获取值
- r - 视网膜显示上的 RStudio 中的内联图大小和编织图大小不一致