Python捕获组并用正则表达式引用它

标签 python regex capture

我正在尝试使用正则表达式从文件中捕获数据并引用它。我想捕获“邮政编码”:和逗号之间的任何内容。当我替换该值时,它显示为“whateverdata(末尾没有引号)。为什么会这样?

数据将如下所示:"State":"NC","Postal Code":27605,"Description":null,

我的代码:

pattern = r'"Postal Code":(.+),'
replacement = r'"\1"'
jsonObj = re.sub(pattern, replacement, jsonObj)

既然这是json,有没有更好的方法来解决这个问题?看来这是一个常见问题

最佳答案

您需要在此处使用非贪婪匹配(如@hwnd在评论中建议的那样):

r'"Postal Code":(.+?),'

或者,既然您知道这是邮政编码,请匹配一个或多个数字:

r'"Postal Code":(\d+),'

演示:

>>> import re
>>> pattern = re.compile(r'"Postal Code":(\d+),')
>>> source = '"State":"NC","Postal Code":27605,"Description":null,'
>>> pattern.search(source).group(1)
'27605'

关于Python捕获组并用正则表达式引用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28595919/

相关文章:

python - 将行号传递给嵌入式 Python 解释器

Mysql 正则表达式匹配 <year>、<year_0>、<year_1> 标签中的相同子字符串

iphone - CVPixelBufferLockBaseAddress 为什么?使用 AVFoundation 捕获静态图像

audio - 无法在Ubuntu中使用Electron desktopcapturer捕获系统音频输出

python - 从python中的keycode获取keysym

python - 调试在 C++ 上扩展的 Python

python - 在 pytorch 中制作自定义非平凡损失函数

regex - 如何用 'sed' 或 'awk' 替换每行中第二次出现的空格?

regex - 正则表达式 : Extract the lines

iphone - 在 iOS 中对图层应用蒙版后如何捕获屏幕?