: 나는 (예를 들어, 각 줄에서 숫자 값을 추출 할 경우의에서사용 정규식
Sigma 0.10 index = $5.00
beta .05=$25.00
.35 index (or $12.5)
Gamma 0.07
가 " 라인 $ 5.00 ""라인 1), (가능한 경우) 금액 또는에서 "0.10 1.
: 나는 (예를 들어, 각 줄에서 숫자 값을 추출 할 경우의에서사용 정규식
Sigma 0.10 index = $5.00
beta .05=$25.00
.35 index (or $12.5)
Gamma 0.07
가 " 라인 $ 5.00 ""라인 1), (가능한 경우) 금액 또는에서 "0.10 1.
import re
s="""Sigma 0.10 index = $5.00
beta .05=$25.00
.35 index (or $12.5)
Gamma 0.07"""
print re.findall(r'[0-9$.]+', s)
출력 :
['0.10', '$5.00', '.05', '$25.00', '.35', '$12.5', '0.07']
더 엄격한 정규식 :
print re.findall(r'[$]?\d+(?:\.\d+)?', s)
출력 :
['0.10', '$5.00', '$25.00', '$12.5', '0.07']
당신은 또한 .05
를 일치 시키려면 :
print re.findall(r'[$]?(?:\d*\.\d+)|\d+', s)
출력 :
['0.10', '$5.00', '.05', '$25.00', '.35', '$12.5', '0.07']
음 기본 정규식 것 be : \$?\d+(\.\d+)?
, 번호를 얻을 것이다. 불행히도, 나는 JavaScript/C#에서 정규 표현식을 사용하므로 파이썬에서 여러 줄을 어떻게 처리해야할지 모르겠습니다. 정말 간단한 깃발이되어야합니다.
왜 끝에 '?'가 필요한지 설명 할 수 있습니까? –
'?'아마도 그럴 것입니다. 아마 그렇지 않을 수도 있습니다. 예를 들어'spam '은'? '가's '다음에 오므로'spam '또는'spams '와 일치합니다. 그러나 그룹과 함께 사용할 경우 ('() '로 묶음) 그룹 전체에 적용됩니다. 그래서'(\. \ d +)? '는 숫자 뒤에 숫자가 오는 소수점이있는 경우 일치를 의미합니다. – sircodesalot
re.MULTILINE
플래그와 \n
을 사용하여 줄 바꿈을 나타냅니다.
source = '''Sigma 0.10 index = $5.00
beta .05=$25.00
.35 index (or $12.5)
Gamma 0.07'''
import re
# only handles two top lines; extend to taste
rx = re.compile(
'Sigma (\d*\.\d+) index = (\$\d*\.\d+)\nbeta (\d*\.\d+).*',
re.MULTILINE
)
print rx.search(source).groups()
# prints ('0.10', '$5.00', '.05')
은 라인과 몇 가지 간단한으로 정규 표현식의 사용, 하나 개의 당 결과 라인도 .split('\n')
고려하십시오.
'[$]'은 멋진 트릭이지만 기억해야 할 것입니다. – sircodesalot