By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,272 Members | 1,733 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,272 IT Pros & Developers. It's quick & easy.

regex question

P: n/a
Hi,
this is not specifically a Python question but since I'm doing it in
Python I thought I'd ask here.

I have a BibTeX file with entries of the form

@Article{dkapp3,
author = {Kier, L.B},
title = {Distinguishing Atom Differences in a Molecular Graph Index},
journal = {Quant. Struct.-Act. Relat. Pharmacol.,Chem. Bio},
year = {1986},
OPTkey = {},
volume = {5},
OPTnumber = {},
pages = {7-12},
OPTmonth = {},
OPTnote = {},
OPTannote = {}
}

(it also has entries for Book and InBook)

I have an re that is able to get each bibitem: @Article{(.*?)}\n
From the result I can easily get the key using: @.+?\{(.+?),

I was wondering if it would be possible to do the two things in one re.
That is, first get the string of 1 bibitem and then within that get the
key from the matched bibitem.

I think I should be using a lookbehind(?) but I'm not sure.

Any pointers would be appreicated

Thanks
--
-------------------------------------------------------------------
Rajarshi Guha <ra******@presidency.com> <http://jijo.cjb.net>
GPG Fingerprint: 0CCA 8EE2 2EEB 25E2 AB04 06F7 1BB9 E634 9B87 56EE
-------------------------------------------------------------------
Q: What's purple and commutes?
A: An abelian grape.

Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a

"Rajarshi Guha" <ra******@presidency.com> schrieb im Newsbeitrag
news:pa****************************@presidency.com ...
Hi,
this is not specifically a Python question but since I'm doing it in
Python I thought I'd ask here.

I have a BibTeX file with entries of the form

@Article{dkapp3,
author = {Kier, L.B},
title = {Distinguishing Atom Differences in a Molecular Graph Index},
journal = {Quant. Struct.-Act. Relat. Pharmacol.,Chem. Bio},
year = {1986},
OPTkey = {},
volume = {5},
OPTnumber = {},
pages = {7-12},
OPTmonth = {},
OPTnote = {},
OPTannote = {}
}

(it also has entries for Book and InBook)

I have an re that is able to get each bibitem: @Article{(.*?)}\n
From the result I can easily get the key using: @.+?\{(.+?),

I was wondering if it would be possible to do the two things in one re.
That is, first get the string of 1 bibitem and then within that get the
key from the matched bibitem.

I think I should be using a lookbehind(?) but I'm not sure.

Any pointers would be appreicated

Thanks
--
-------------------------------------------------------------------
Rajarshi Guha <ra******@presidency.com> <http://jijo.cjb.net>
GPG Fingerprint: 0CCA 8EE2 2EEB 25E2 AB04 06F7 1BB9 E634 9B87 56EE
-------------------------------------------------------------------
Q: What's purple and commutes?
A: An abelian grape.


Hello Rajarshi,

I think the following program is not very useful, if the entries differ only
a bit, but it answers your question

import re

rx_bibtex= re.compile(
'''\@Article\{(?P<article>[^,]+),
*author = \{(?P<author>[^}]*)\},
*title = \{(?P<title>[^}]*)\},
*journal = \{(?P<journal>[^}]*)\},
*year = \{(?P<year>[^}]*)\},
*OPTkey = \{(?P<OPTkey>[^}]*)\},
*volume = \{(?P<volume>[^}]*)\},
*OPTnumber = \{(?P<OPTnumber>[^}]*)\},
*pages = \{(?P<pages>[^}]*)\},
*OPTmonth = \{(?P<OPTmonth>[^}]*)\},
*OPTnote = \{(?P<OPTnote>[^}]*)\},
*OPTannote = \{(?P<OPTannote>[^}]*)\}
\}''')

s='''@Article{dkapp3,
author = {Kier, L.B},
title = {Distinguishing Atom Differences in a Molecular Graph Index},
journal = {Quant. Struct.-Act. Relat. Pharmacol.,Chem. Bio},
year = {1986},
OPTkey = {},
volume = {5},
OPTnumber = {},
pages = {7-12},
OPTmonth = {},
OPTnote = {},
OPTannote = {}
}
'''

mo = rx_bibtex.match(s)
if mo:
print mo.groupdict()
GŁnter
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.