this SO postなど、私は多くの検索を行いました。Python Regexは、小数点以下のパターンとそれに続く別のパターンの一致に一致します。
巨大な文字列を使用して、10進数のパターンの後に英数字の単語の前に表示される4桁のグループをキャプチャしようとしています。
他の4桁の番号グループには、それらの前に単語または他の番号パターンがあるため、修飾されません。
EDIT:私の文字列は複数行ではなく、視覚的にわかりやすくするためにここに示してあります。例えば
:
>> my_string = """BEAVER COUNTY 001 0000
1010 BEAVER
2010 BEAVER COUNTY SCH DIST
0.008504
...(more decimals)
0.008508
4010 COUNTY SPECIAL SERVICE DIST NO.1 <---capture this 4010
4040 BEAVER COUNTY
8005 GREENVILLE SOLAR
0.004258
0.008348
...(more decimals)
0.008238
4060 SPECIAL SERVICE DISTRICT NO 7 <---capture this 4060
"""
理想的なre.findall
を返す必要があります:事前に
re.findall(r'(?=(\d\.\d{6}\s+)(\s+\d{4}\s))', my_string)
# also tried
re.findall("(\s+\d{4}\s+)(?:(?!^\d+\.\d+)[\s\S])*", my_string)
# which gets me a little closer but I'm still not getting what I need.
ありがとう:ここ
['4010','4060']
が欠けている、私が試した模様です!
試し[ '(?M)^ \ D + \ \ D + [^ \ Sの\ rをする\ n] \ B' * [\ Rを\ n] +(\ dの{4})](HTTPS :\ regex101.com/r/gT6sS0/1) –
're.findall(r '\ d \。\ d {6} \ s +(\ d {4})\ b'、my_string)'はどうですか? – WKPlus
@WKPlus文字列が複数行でないときにあなたのメソッドが私のために働いた - ニース! – cheevahagadog