모든 그룹을 움켜 잡지 않고, 여러 분야에서 작동하지 않는 정규식
-
23-12-2019 - |
문제
나는 다음의 정규식 패턴을 가지고있다 :
pattern = r'''
(?P<name>.+?)\n
SKU\s#\s+(?P<sku_hidden>\d+)\n
Quantity:\s+(?P<quantity>\d+)\n
Gift\sWrap:\s+(?P<gift_wrap>.+?)\n
Shipping\sMethod:.+?\n
Price:.+?\n
Total:\s+(?P<total_price>\$[\d.]+)
'''
.
다음을 사용하여 검색합니다.
re.finditer(pattern, plain, re.M | re.X)
.
아직 re.findall
를 사용하는 것은 동일한 결과를 산출합니다.
다음과 같은 텍스트와 일치해야합니다 :
Red Retro Citrus Juicer
SKU # 403109
Quantity: 1
Gift Wrap: No
Shipping Method:Standard
Price: $24.99
Total: $24.99
.
일어나는 첫 번째 일은 re.M
및 re.X
를 사용하는 것입니다. 작동하지 않지만 하나의 한 줄에 모두 넣으면됩니다.다른 것은 첫 번째 그룹만이 일할 때 나머지는 무시됩니다.어떤 생각은?
추가 정보 :
내 패턴을 바로 변경하면 :
pattern = r'''
(?P<name>.+?)\n
SKU\s#\s+(?P<sku_hidden>\d+)\n
'''
.
내 출력은 다음과 같이 나옵니다. [u'Red Retro Citrus Juicer']
가 일치하지만 SKU가 나타나지 않습니다.같은 줄에 모든 것을 넣으면 다음과 같이 :
pattern = r'(?P<name>.+?)\nSKU\s#\s+(?P<sku_hidden>\d+)\n'
.
일치하고 모든 것을 잡습니다.
해결책
X
플래그를 사용할 때는 댓글을 시작하는 #
를 이스케이프해야합니다.
바로 지금 두 줄 정규 표현식은
와 같습니다.(?P<name>.+?)\n
SKU\s
.
원하는 것은
pattern = r'''
(?P<name>.+?)\n
SKU\s\#\s+(?P<sku_hidden>\d+)\n
Quantity:\s+(?P<quantity>\d+)\n
Gift\sWrap:\s+(?P<gift_wrap>.+?)\n
Shipping\sMethod:.+?\n
Price:.+?\n
Total:\s+(?P<total_price>\$[\d.]+)
'''
.
\#
를 주목하십시오 ...
제휴하지 않습니다 StackOverflow