抓住括号和Regex里面的所有东西

2024-05-31 23:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读一行,格式如下

.... .... [..*stuff*..].... ... .... .... [*stuff*] ... ... [*stuff*]

...*stuff*只是数字和文本

我试图只提取括号内文本/数字的第一个实例以及括号本身

所以。。。你知道吗

[..*stuff*..]

目前,我的代码是这样做的,但有时如果有一组以上的方括号,它会提取第一组方括号之后的所有内容。你知道吗

这意味着当我想要第一组括号中的所有内容时,它也会打印出字符串的其余部分

[*stuff*]...........[*sutff*].....[*stuff*]

当我只想要第一套支架和里面的一切。你知道吗

我使用的正则表达式是BracketedRegex = re.compile(r'\[.*\]')。你知道吗

我的代码:

BracketedRegex = re.compile(r'\[.*\]')

f = open("logfile.log","r")

for line in f.readlines():
    Bracket = re.search(BracketedRegex,line)
    if Bracket:
        print Bracket.group()

Tags: 实例字符串代码文本re内容格式line
1条回答
网友
1楼 · 发布于 2024-05-31 23:51:08

您需要使正则表达式不贪婪:

BracketedRegex = re.compile(r'\[.*?\]')

*?量词将匹配满足模式的最少个字符,而*将匹配最大个字符。你知道吗

或者,可以匹配任何不是右括号的字符(而不是.元字符):

BracketedRegex = re.compile(r'\[[^\]]*\]')

其中[^..]负字符类匹配任何不是该类成员的字符,例如任何不是]字符。你知道吗

相关问题 更多 >