Python正则表达式;括号内的括号
我知道这里有太多python正则表达式的问题,我只是无法理解我的具体问题,即使有例子 我试过使用,但它只是不点击 我有以下几句话:Python正则表达式;括号内的括号,python,regex,parsing,Python,Regex,Parsing,我知道这里有太多python正则表达式的问题,我只是无法理解我的具体问题,即使有例子 我试过使用,但它只是不点击 我有以下几句话: [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
[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]
...nothing returned for line 2...
[This can 4 have any X1 rubbish in it]
[ThisIsText123], [ThisIsSymbolsText123]
它几乎适用于以下代码:
import re
pattern = re.compile(r'(\[.*?\])')
regex = re.findall(pattern,text)
我试图像这样合并“not:?”?!A-Za-z0-9(\[.*?\])
是我从中得到的,但是各种尝试都不起作用
唯一的问题是上面的代码也返回[THIS2CAN2Have-SymbolsAndNumbers0],我不想要它,因为它是用括号括起来的
重要的是,我被卡住的地方是,方括号和圆括号之间可能有文本和数字,如本例所示:(blah[THIS2CAN2Have-SymbolsAndNumbers0])
有人能帮忙吗
作为补充说明,仅供参考,一旦我弄清楚正则表达式,最终目标是将其合并到一个循环中,该循环表示:
[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])”
执行与其他输出不同的子例程,而不是圆括号内的子例程。您可以使用以下两种模式:
- 不包括在括号内<代码>\[[^]]+\](?!\)
- 用括号括起来<代码>\[[^]]+\](?=\)
- 用括号括起来并包含在匹配中
\([^[]+\[^]]+\]\)
import re
mytext='''
[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]
'''
print('no ():')
for i in re.findall(r'\[[^]]+\](?!\))',mytext):
print(i)
#do one routine
print('with ():')
for i in re.findall(r'\([^[]+\[[^]]+\]\)',mytext):
print (i)
#do second routine
印刷品:
no ():
[Hi]
[text]
[This can 4 have any X1 rubbish in it]
[ThisIsText123]
[ThisIsSymbolsText123]
with ():
(blah[THIS2CAN2Have-SymbolsAndNumbers0])
您的输出与代码不匹配(假设它工作)<代码>[2此can2 have-symbols和numbers0]应该是最后打印的内容,因为它被括在括号中。。。?在我的机器上是吗?真的吗?否决票?你运行过密码吗?是的,答案是错误的。为什么
[ThisIsText123]
是最后一次输出?@FHTMitchell已修复。根据您的新要求,请尝试