我知道这里有太多的python正则表达式问题,我只是不能解决我的具体问题,即使有例子。在
我尝试过使用regex101,但它就是没有点击。在
我有以下句子:
[Hi]-THISISALOADOFTEXT-[text]
I-X-(blah[THIS2CAN2Have-SymbolsAndNumbers0])-ABCD-{x}A-AB
A-[This can 4 have any X1 rubbish in it]-ABCDDS-OH
A-F{a}R-(textnumber1)-AB-[ThisIsText123]-P-{d}C-(ThisCanHaveNumbers1)-W-[ThisIsSymbolsText123]
我只想拉出方括号之间的内容,除非方括号被圆括号(圆括号)括起来。在
因此在上面的示例中,它将返回:
^{pr2}$它几乎可以使用以下代码:
import re
pattern = re.compile(r'(\[.*?\])')
regex = re.findall(pattern,text)
我试图像这样合并“not”:?!A-Za-z0-9(\[.*?\])
,这是我从python manual得到的,但是各种尝试都没有成功。在
唯一的问题是上面的代码也返回了[THIS2CAN2Have-SymbolsAndNumbers0],我不希望这样,因为它是用括号括起来的。在
重要的是,我陷入困境的地方是,在方括号和圆括号之间可以有文本和数字,就像在这个例子中一样:(blah[THIS2CAN2Have-SymbolsAndNumbers0])
有人能帮忙吗?在
顺便说一句,仅供参考,一旦我弄清楚正则表达式,最终目标是将其合并到一个循环中,该循环表示:
编辑1: 我如何扩展它,以便对于括号中有方括号的序列,返回括号中的完整短语。例如,输入序列:
[Hi]-THISISALOADOFTEXT-[text]
I-X-(blah[THIS2CAN2Have-SymbolsAndNumbers0])-ABCD-{x}A-AB
A-[This can 4 have any X1 rubbish in it]-ABCDDS-OH
A-F{a}R-(textnumber1)-AB-[ThisIsText123]-P-{d}C-(ThisCanHaveNumbers1)-W-[ThisIsSymbolsText123]
将产生输出:
[Hi], [text]
(blah[THIS2CAN2Have-SymbolsAndNumbers0])
[This can 4 have any X1 rubbish in it]
[ThisIsText123], [ThisIsSymbolsText123]
这样我就可以在圆括号输出“(blah[THIS2CAN2Have-SymbolsAndNumbers0])'
”上执行与其他输出不同的子例程,而不是在圆括号中。在
您可以使用以下两种模式:
\[[^]]+\](?!\))
\[[^]]+\](?=\))
根据您的新要求,您可以使用:
\([^[]+\[[^]]+\]\)
我的答案是假设括号是平衡的,并且右}后面。在
)
跟在{在Python中:
印刷品:
^{pr2}$相关问题 更多 >
编程相关推荐