Muszę parsować niektóre tabele z pliku tekstowego ASCII. Oto częściowa próbka:Regex: Powtarzające się grupy przechwytywania
QSMDRYCELL 11.00 11.10 11.00 11.00 -.90 11 11000 1.212
RECKITTBEN 192.50 209.00 192.50 201.80 5.21 34 2850 5.707
RUPALIINS 150.00 159.00 150.00 156.25 6.29 4 80 .125
SALAMCRST 164.00 164.75 163.00 163.25 -.45 80 8250 13.505
SINGERBD 779.75 779.75 770.00 773.00 -.89 8 95 .735
SONARBAINS 68.00 69.00 67.50 68.00 .74 11 3050 2.077
Tabela składa się z 1 kolumny tekstu i 8 kolumn liczb zmiennoprzecinkowych. Chciałbym przechwycić każdą kolumnę za pomocą wyrażeń regularnych.
Jestem całkiem nowy w wyrażeniach regularnych. Oto wadliwy schemat regex, który wymyśliłem:
(\S+)\s+(\s+[\d\.\-]+){8}
Ale wzór przechwytuje tylko pierwszą i ostatnią kolumnę. RegexBuddy generuje również następujące ostrzeżenie:
Użytkownik sam powtórzył grupę przechwytującą . Grupa przechwyci ostatnią iterację tylko w . Umieść przechwytywaną grupę wokół powtarzającej się grupy, aby przechwycić wszystkie iteracje.
Sprawdziłem ich plik pomocy, ale nie mam pojęcia, jak rozwiązać ten problem.
Jak przechwycić każdą kolumnę osobno?
Jakiego języka używasz? W .NET jest to łatwe. –
@Tim: Tak, zamierzam napisać program w języku C#. Ale w tej chwili prototypuję go w Pythonie. – invarbrass
Zobacz także: http: // stackoverflow.com/questions/3029127/is-there-a-regex-flavor-that-allow-me-to-count-the-number-of-repetitions-pasujący/ – polygenelubricants