2012-10-26 7 views
1

나는 내가 다른 가격에 선행하는 경우 그룹 않기 위해 가격을 부정적인 lookbehind를 사용하기 위해 노력하고있어 다음어떻게이 부정적인 lookbehind 정규식을 고칠 수 있습니까?

$136.50 (was $195.00) 

136.50을 캡처 할. 내가 무슨 일을

(?<!\$.+)\$(?<price>[\d.,]+)

을하고있는 중이 야 : 이것은 내가 가진 무엇인가?

편집 : 문제는 내가 가변 길이 문자열을 사용할 수 없다는 것입니다,하지만 난 하나없이 정규식을 구성하는 방법을 모르겠습니다.

EDIT : 경우에 따라 단 하나의 가격 만있을 수 있습니다.이 경우 가격을 그룹화하고자합니다. 이것이 내가 가격이 첫 번째 가격인지 확인하기 위해 긍정적 인 선견지명을 사용하지 않은 이유입니다.

+0

이 다른 가능한 형식 또는 것과 동일한 그룹에 의해 다음되지 않습니다 이 형식이 유일한 경우입니까? – bukart

+1

왜 첫 번째 가격을 지불하지 않으시겠습니까? –

+0

@bukfixart는 단 하나의 가격 만있을 것입니다. 또는 나열된 형식의 가격이 두 가지가 될 것입니다. 그 중 첫 번째를 항상 원할 것입니다. – jela

답변

3

음수 배역을 사용하지 말고 첫 번째 가격 (첫 번째 그룹에서, 그리고 두 번째 그룹에는 분수가있는 경우)을 사용하십시오. 아마도이게 뭔가?

/^.*?\$([\d,]+)(\.\d\d)?/ 
+0

한 줄의 PERL 정규 표현식 검사기를 사용 했으므로 처음부터 끝까지 슬래시를 제거해야 할 수도 있습니다 ... –

+0

감사합니다. 원래 방법, 비록 내가 아직도 그런 식으로 할 수 있는지 궁금 하네. – jela

+0

가능성이 있습니다. 다시 추적해야 할 수도 있지만,이 경우 많은 의미가 없습니다. 정규 표현식은 앞으로 나아갈 때 더 좋습니다 :) –

0

좋아, 그래서 당신도 처음 가격을해야한다고 생각 :

이, 포함 모든 가격을 일치해야합니다. 코마 owlstead /^.*?\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?).*$/

0

에서이 같은 수천, 당신이

/(\$\d*.\d*)(?!.\1)/ 

같은 것을 사용할 수 있습니다 이것은 첫 번째 그룹과 일치

관련 문제