2017-01-18 2 views
-2

아래 예제와 같이 루프에 일부 문자열이 있습니다.Regex를 사용하여 문자열에서 이름 추출

1) 올림피아 인더스트리 즈 (Olympia Industries Ltd.)에서 판매 (5,774 개 중 4.7 | 33,445 점), 아마존에서 판매 됨. 선물 포장 가능.

2) 건강 기능으로 처음으로 거래되는 상품 (5 개 중 4.3 | 47 개)이 Amazon에서 판매됩니다. 선물 포장 가능.

3) hamsaveni (5 점 중 4.1 점 | 101 점)가 판매하고 완수했습니다.

4) Coffee Shopee에서 판매 및 완수 (5 점 만점에 3.4 점). 내가 원하는 무엇

판매자의 즉의 이름을 추출하는 것입니다

1) 올림피아 산업 (주) 2) 건강 첫번째 거래 3) hamsaveni 4) 커피 Shopee 나는 우리가 그것을 할 수있어

그리고 다른 조건의 경우 일부 "("첫 번째 중괄호 일치. 그러나 불행하게도 내가 그것을 할 수 없습니다 시까 지.

어떤 도움도 정말 감사합니다.

+0

정규 표현식은'. + (? = \()'입니다. –

+0

판매자 명명의 시작이 명확하게 정의되어 있지 않기 때문에 일반적인 방법으로는 불가능합니다. 먼저이를 허용하는 규칙을 지정해야합니다. – arkascha

+0

@ Murat, 귀중한 의견을 보내 주셔서 감사합니다. 불행히도 ". + (? = \()."은 Sold by와 Sold를 제거하지 않고 수행했습니다. 어떤 방법이 있습니까? –

답변

1

H 고의적 :

+0

고마워 토토와 Murat. 그것 preg_match ('/^([^ (] +) /', $ 판매자 2, $ 일치); $ 판매자 = str_replace ("by", " , $ matches [0]); –

+0

@ShariqueAnwer : 도움이 되니, 반갑습니다. – Toto

0

나는 판매자 이름이 "by"다음에 시작하고 (.

당신을 위해 작동합니다.

SUBSTR ($ 문자열, strpos ($ 문자열 '에 의한') + 2, strpos ($ 문자열, '(') - '에 의해'strpos ($ 문자열) - 2)

0

나는 희망 사람들이 (꽤 유사) .NET 정규식 구문을 사용하여 내 마음을하지만, 여기에 내가 생각 해낸 무엇을하지 않습니다 : 기본적으로

(?:by)([A-Za-z ]+)(?:\([0-9]+(\.[0-9]+)?) 

, 이름이 발생 문자와 공간의 조합으로 구성된 캡처 한 그룹입니다 "by"단어 다음에 (non-capturing group입니다. 실제로 캡처하는 데 관심있는 사람은 모두 이름입니다.) 등급 (비 캡처 그룹)

관련 문제