2012-03-24 1 views
-1

제품 이름에서 모델 번호를 추출하고 싶습니다. 모델은 4 자 이상의 문자 및 숫자 문자열로 간주되어야합니다.정규식을 사용하여 4 자 이상의 문자 및 숫자 문자열을 추출하는 방법은 무엇입니까?

예를 들어, 다음 제품 이름에서 '26PFL3405H'는 모델 번호입니다.

필립스 26PFL3405H 텔레비전 나는 단어가

+2

을 지금까지 시도 무엇입니까? 정규식의 어떤 맛? 노력은 어디 있습니까? 모델 번호에 대한 정의에 따라 "필립스"와 "텔레비전"도 모델 번호이지만 필자는 그것이 당신이 원하는 것임을 의심합니다. 명확히하십시오. –

답변

1

당신은 이런 식 사용할 수이어야 하나 개의 숫자와 하나 개의 알파벳 중 하나를 소문자 나 대문자를 포함해야합니다 의미 모델 번호로

:

\b(?=[A-Z]+\d|\d+[A-Z])[A-Z\d]{4,}\b 

대소 문자를 구분하지 않으려면 /i 플래그 또는 (?i)을 사용하십시오.

+0

질문에이 내용을 지정해야합니다. 모달은 숫자와 문자를 모두 포함해야하지만 문자의 양과 숫자에 대한 조건이 없습니다. 하지만 총 모달 이름은 최소한 4 자 이상이어야합니다. – Ankit

+0

@Ankit, 업데이트. – Qtax

+0

고마워요, 잘 작동하지만 Model을 적어도 4 자 이상으로 수정하려면 어떻게해야합니까? – Ankit

1

이 정규식보십시오 : 그것은 모두 포함해야한다는 조건을 충족하려면 (고정)

<?php 

$product_name = "Philips 26PFL3405H Television"; 
$pattern = '/ (\w|\d[\d\w]+) /i'; 
preg_match($pattern, $product_name, $matches); 

echo $matches[1]; 

?> 

/\s([A-Z0-9]+)\s/ 
+0

고마워, 내가이 PHP를 사용하려고합니다, 당신의 정규식은 atleast 하나의 문자와 1 개의 알파벳을 포함하는 모델 번호를 시행하지 않습니다. 모델에는 글자와 숫자가 모두 포함되어야합니다. – Ankit

+0

@Ankit 수정했습니다. 이제 PHP로되어 있습니다 (+ 적어도 1 개의 문자와 1 개의 문자로 매칭됩니다) –

1

을, 정규 표현식은 내가 전적으로 무엇을 생각

[A-Z0-9]*(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]* 

, 같이한다 최소 길이를 적용하는 가장 좋은 방법이지만 작동하려면

(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]{3,}|[A-Z0-9](?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]{2,}|[A-Z0-9]{2,}(?:[A-Z][0-9]|[0-9][A-Z])[A-Z0-9]|[A-Z0-9]{3,}(?:[A-Z][0-9]|[0-9][A-Z]) 

나는 정규식을 이렇게 오랫동안 게시했다. 첫 번째 정규 표현식의 결과를 길이로 필터링하는 것이 좋습니다. 처음 4+의 필터 크기를 한 다음 개별적으로 알파벳과 숫자를 찾아 :

0

나는 2 단계 접근 방식을 취할 것

echo "12345 Philips 26PFL3405H Television" | egrep -o "\b[a-zA-Z0-9]{4,}\b" | egrep "[0-9]" | egrep "[a-zA-Z]" 
26PFL3405H 
관련 문제