如何在关键字后面的{}
中嵌入字符串,其中关键字与大括号{}
之间的字符数未知。 e.g:
includegraphics[x=2]{image.pdf}
关键字是includegraphics,要找到的字符串是image.pdf,但[x=2]
之间的文本可以在两个[]
之间有任何内容。
所以我想忽略关键字和{
之间的所有字符,或者我想忽略[]
答案 0 :(得分:2)
使用re.findall
>>> sample = 'includegraphics[x=2]{image.pdf}'
>>> re.findall('includegraphics.*?{(.*?)}',sample)
['image.pdf']
<强>解释强>:
re
module处理Python中的正则表达式。它的findall
方法可用于查找字符串中模式的所有出现。
您感兴趣的模式的正则表达式为'includegraphics.*?{(.*?)}'
。这里.
表示&#34;任何字符&#34;,而*
表示0次或更多次。问号使这成为一种非贪婪的操作。来自文档:
*
,+
和?
限定符都是贪婪的;他们匹配得那么多 文本尽可能。有时这种行为是不可取的;如果有<.*>
与<H1\>title</H1>
匹配,它将与整个匹配 字符串,而不仅仅是<H1>
。在限定符之后添加?
以非贪婪或极简的方式进行比赛;少数人物 尽可能匹配。在前一个表达式中使用.*?
将 仅匹配<H1>
。
请注意,虽然在您使用.*?
的情况下应该没问题,但一般来说,使用更专业的字符组(例如\w
代表字母数字和\d
)会更好数字,当您知道内容将提前包含的内容时。
答案 1 :(得分:0)
使用re.search
re.search(r'includegraphics\[[^\[\]]*\]\{([^}]*)\}', s).group(1)