2016-09-12 3 views
1

길이의 너비와 높이를 정규식과 일치 시키려고합니다.정규식으로 제품 치수 일치

나는 다음과 같은 경우

Artikelgewicht3,7 Kg 
Produktabmessungen60,4 x 46,5 x 42 cm 

or 

Artikelgewicht3,7 Kg 
Produktabmessungen60 x 46 x 42 

or 

Artikelgewicht3,7 Kg 
Produktabmessungen60 x 46 

잘 작동 (\d+) x (\d+) x (\d+)와 일치 할 수있는 두 번째 경우를 가지고있다.

또한 첫 번째와 세 번째 경우를 (\d+)(\\,\d+)? x (\d+)(\\,\d+)? x (\d+)(\\,\d+)?과 대조했습니다.

내가 뭘 잘못하고 있는지 제안 해주세요.

+0

'\\'는 백 슬래시를 이스케이프 처리하고 글자 '\'를 그대로 사용합니다. 또한 세 번째 케이스에는 2 개의 치수 만 있고 표현식에는 3이 필요합니다. –

답변

1

당신은 3 사건을 충당하기 위해 정규식에서 선택 일치를 사용할 수 있습니다 : 이것은 3 번째로 캡처 그룹의 첫번째 캡처 그룹의 length, widthheight을 줄 것이다

(\d+(?:,\d+)?) x (\d+(?:,\d+)?)(?: x (\d+(?:,\d+)?))? 

RegEx Demo

.

각 그룹이 서브 표현식을 사용한다 : 쉼표 소수부 1+ 숫자 뒤에 하나 개 이상의 숫자 임의로이다

(\d+(?:,\d+)?) 

.

또한 높이 부분은 해당 부분을 선택적으로 만들기 위해 (?: x (\d+(?:,\d+)?))?을 사용하기 때문에 선택 사항입니다.

1

으로 간단하게 :

^Produktabmessungen\K(.+) 

a demo on regex101.com을 참조하십시오 (및 다른 수정을 마음!).
이 상황에서는 실제로 \K이 필요하지 않지만 multiline 플래그가 필요합니다. 어떤 언어를 사용하고 있습니까?