首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式在python中不匹配

正则表达式在python中不匹配
EN

Stack Overflow用户
提问于 2020-08-17 05:00:24
回答 4查看 69关注 0票数 0

我需要从如下字符串中提取一个矩阵(它可以是一个更大的矩阵):

代码语言:javascript
复制
[[13,2,99][-2,3,13][1,3,0][7,77,777]]

我想将所有查找子字符串的列表与我在regexr.com上测试的正则表达式匹配,这个表达式给出了我想要的匹配,但不是在pythex.org或脚本中。

下面是使用regex的示例代码:

代码语言:javascript
复制
import numpy as np
import re
matrix = "[[13,2,99][-2,3,13][1,3,0][7,77,777]]"
l = []
regex = re.compile(r"\[(-?[0-9]+,)+-?[0-9]+]")
for el in re.findall(regex, matrix):
    l.append(np.fromstring(el[1:len(el)-1], dtype=int, sep=",").tolist())
a = np.array(l)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-08-17 05:33:20

正则表达式中的捕获括号导致re.findall只返回括号大小的子匹配。切换到非分组括号修复了它。

代码语言:javascript
复制
Python 3.8.2+ (heads/3.8:686d508, Mar 26 2020, 09:32:57) 
[Clang 11.0.3 (clang-1103.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> matrix = "[[13,2,99][-2,3,13][1,3,0][7,77,777]]"
>>> regex = re.compile(r"\[(-?[0-9]+,)+-?[0-9]+]")
>>> re.findall(regex, matrix)
['2,', '3,', '3,', '77,']
>>> regex = re.compile(r"\[(?:-?[0-9]+,)+-?[0-9]+]")
>>> re.findall(regex, matrix)
['[13,2,99]', '[-2,3,13]', '[1,3,0]', '[7,77,777]']
票数 1
EN

Stack Overflow用户

发布于 2020-08-17 05:51:21

您可以在其中插入一些逗号,然后json.loads它:

代码语言:javascript
复制
json.loads(matrix.replace('][', '],['))
票数 2
EN

Stack Overflow用户

发布于 2020-08-17 05:13:14

试着使用

代码语言:javascript
复制
import re
import numpy as np

s = "[[13,2,99][-2,3,13][1,3,0][7,77,777]]"
l = []
for i in re.findall(r"(\[.*?\])", s):    # Find everything inside [] brackets. 
    l.append(np.fromstring(i.strip("[]"), dtype=int, sep=","))
    
print(l)

输出:

代码语言:javascript
复制
[array([13,  2, 99]), array([-2,  3, 13]), array([1, 3, 0]), array([  7,  77, 777])]

无瘤

代码语言:javascript
复制
import re

s = "[[13,2,99][-2,3,13][1,3,0][7,77,777]]"
l = []
for i in re.findall(r"(\[.*?\])", s):
    l.append(list(map(int, i.strip("[]").split(","))))
    
print(l)

输出:

代码语言:javascript
复制
[[13, 2, 99], [-2, 3, 13], [1, 3, 0], [7, 77, 777]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63444786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档