如何在使用regex标记化包含括号的同时在括号之间查找文本

2024-06-02 07:30:02 发布

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

如何使用regex提取括号内的文本? 例如,如果我有

string='这是一个测试代码[asdf-wer-a2 asdf](ascd asdfas-were)'

我希望输出是

[asdf-wer-a2-asdf],(ascd asdfas-were)

我到处找这个,一直没能解决这个问题。 如果有人能帮我那就太好了

谢谢


Tags: 文本a2stringregex括号测试代码werasdf
3条回答

http://ideone.com/DmpYH1

这可能不是最好的解决方案,但非常简洁。指定在分隔符之间查找文本。我提供开始[和结束],然后最后()给卷曲的。你知道吗

s = 'This is a test code [asdf -wer -a2 asdf] (ascd asdfas -were)'
print (s[s.find("[")+1:s.find("]")])
print (s[s.find("(")+1:s.find(")")])

编辑:如果需要[]和(),只需执行以下操作:

print (s[s.find("["):s.find("]")+1])
print (s[s.find("("):s.find(")")+1])

退货:

[asdf-wer-a2 asdf] (ascd asdfas-曾经)

您可以使用下面的正则表达式模式。Here就是一个例子

\[[^\)]*\]|\([^)]*\)

st = 'This is a test code [asdf -wer -a2 asdf] (ascd asdfas -were)'


import re

mo = re.search(r'(\[.+\])\s*(\(.+\))',st)

print(mo.groups(2)[0],mo.groups(2)[1])

[asdf -wer -a2 asdf] (ascd asdfas -were)

相关问题 更多 >