ich einen Text haben, die Sachen wie diese enthält:Verwenden regex Informationen von einem bestimmten Textformat bekommen
(some text)
libncursesw5-dev:amd64 depends on libc6-dev | libc-dev;(some text)
libx32ncursesw5 depends on libc6-x32 (>= 2.16);(some text)
libx32ncurses5-dev depends on libncurses5-dev (= 5.9+20150516-2ubuntu1);(some text)
libx32ncursesw5-dev depends on libc6-dev-x32;(some text)
lib32tinfo-dev depends on lib32c-dev;(some text)
Hier ist ein vollständiges Beispiel auf einer der Sätze:
dpkg: error processing package lib32tinfo5 (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libncurses5-dev:amd64:
libncurses5-dev:amd64 depends on libc6-dev | libc-dev; however:
Package libc6-dev is not installed.
Package libc-dev is not installed.
Die ganze Der Text ist in mehrere Absätze unterteilt, so wie der obige, jeder Absatz enthält einen dieser Sätze.
Ich würde eine Regex wie mit Re-Bibliothek in Python, die mich so etwas wie dieses mit findall Option geben würde:
('libc6-dev', '', 'libc-dev', '')
('libc6-x32','2.16')
('libncurses5-dev','5.9+20150516-2ubuntu1')
('libc6-dev-x32','')
('lib32c-dev','')
In anderen Worten, würde ich Ihre Hilfe, um aus einem solchen Text zu bekommen, ein Tupel, das die Pakete mit ihren Versionen enthält, falls angegeben.
habe ich diese Regex:
(?<=depends on)([a-zA-Z0-9\-]*)(?: \([=> ]*([a-zA-Z0-9-+.]*)(?:\)))?|(?: \|)([a-zA-Z0-9\-]*)(?: \([=> ]*([a-zA-Z0-9-+.]*)(?:\)))?(?=;)
ich dieses Ergebnis bekam:
('libc6-dev', '', '', '')
('', '', 'libc-dev', '')
('libc6-x32', '2.16', '', '')
('libncurses5-dev', '5.9+20150516-2ubuntu1', '', '')
('libc6-dev-x32', '', '', '')
('lib32c-dev', '', '', '')
Wie Sie für den Satz sehen:
libncursesw5-dev:amd64 depends on libc6-dev | libc-dev;
ich diese Antwort bekam:
('libc6-dev', '', '', '')
('', '', 'libc-dev', '')
Anstatt diese:
('libc6-dev', '', 'libc-dev', '')
Vielen Dank für Ihre Hilfe.