regex - 正则表达式匹配多组括号之间的所有内容
问题描述
我正在尝试匹配多组括号之间的所有内容
数据示例
[[42.30722,-83.181125],[42.30722,-83.18112667],[42.30722167,-83.18112667,[42.30721667,-83.181125],[+42.30721667,-83.181125]]
我需要匹配内括号内的所有内容,如下所示
42.30722,-83.181125,
42.30722,-83.18112667,
42.30722167,-83.18112667,
42.30721667,-83.181125,
+42.30721667,-83.181125
我怎么做。我试过\[([^\[\]]|)*\]
了,但它给了我带括号的值。任何人都可以帮我解决这个问题。提前致谢
解决方案
似乎其中一个可能缺少括号,或者如果没有,可能类似于以下表达式:
\[([+-]?\d+\.\d+)\s*,\s*([+-]?\d+\.\d+)\s*\]?
开始可能没问题。
测试
import re
expression = r"\[([+-]?\d+\.\d+)\s*,\s*([+-]?\d+\.\d+)\s*\]?"
string = """
[[42.30722,-83.181125],[42.30722,-83.18112667],[42.30722167,-83.18112667,[42.30721667,-83.181125],[+42.30721667,-83.181125]]
"""
print([list(i) for i in re.findall(expression, string)])
print(re.findall(expression, string))
输出
[['42.30722', '-83.181125'], ['42.30722', '-83.18112667'], ['42.30722167', '-83.18112667'], ['42.30721667', '-83.181125'], ['+42.30721667', '-83.181125']]
[('42.30722', '-83.181125'), ('42.30722', '-83.18112667'), ('42.30722167', '-83.18112667'), ('42.30721667', '-83.181125'), ('+42.30721667', '-83.181125')]
如果您想简化/修改/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。
推荐阅读
- ios - IOS/Swift:来自 TextField 的操作方法在展开可选错误时生成 nil
- eclipse - 我可以在 Eclipse 中构建 makefile 之后运行构建后步骤吗?
- svn - SVN 外部项目可以指向不同存储库中的项目吗?
- html - 将菜单包含到 html 文件中
- powershell - 文件重命名日期(-1 天)
- php - 将天、小时和分钟转换为总分钟数
- yaml - RMarkdown 中的 fenced_divs pandoc 扩展
- date - 在 java / Quartz 中处理日期的更简洁的方法
- python - 赋值前的全局变量和引用
- python - Python 表达式求值器,类似于 Jave Spring 框架表达式求值