2011-04-13 5 views
2

정규 표현식을 작성하려고합니다.시퀀스의 BMHT에 대한 RegEx

B - Billion 
M - Million 
T - Thousand 
H - Hundred 

을 지금은 3M2T을 말한다면 그것은 3 million 2 thousand 을 의미하지만 3T2M 말할 수 없다 또는 나는 3M2222T BMTH이 순서에 있어야하고 번호를 작성하는 표준 규칙을 따라야한다 말할 수 없다, 다음과 같이 약어입니다. 나는이 때까지 갔다. ([0-9]+[B]){1}+([0-9]+[M])?+([0-9]+[T])?+([0-9]+[H])? 그러나 B는 강제적이다.

도와주세요.

답변

2

이 시도 :

^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\dH)?$ 

당신이있어 regexr.com?2thld

(?:)을 테스트 할 수 것은 그렇지 않으면 촬영 된 부분이 변수

\d에 저장 비 캡처 그룹, 것은 [0-9]

같다

? 그룹이나 캐릭터를 만든 후에 이야 그것은 선택

+가 단 1 문자입니다 만 M

+0

매우 빠른 답변 주셔서 감사합니다. 나는 그것을 사용했고 효과가 있었다. regex를 더 자세히 배우기위한 몇 가지 지침을 얻고 싶습니다. – prasanna

+0

@prasanna 아주 좋은 정보 출처는 [www.regular-expressions.info] (http://www.regular-expressions.info/tutorial.html)입니다. 그것은 많은 다른 정규 표현식을 다루고 있습니다. 내가 말할 수있는 것은 기본 정규식이 어디 에나 (거의) 동일하지만, 세부 사항을 알게되면 반드시 알아야 할 차이점이 있습니다. Perl의 경우 여기 [perlretut] (http://perldoc.perl.org/perlretut.html)과 [perlrequick] (http://perldoc.perl.org/perlrequick.html)이 있습니다. 나는 또한 프로그래밍 언어에 대한 좋은 자습서가 있다는 것을 확신한다. 그리고 내 대답에있는 것과 같이 테스트 할 여러 온라인 도구가 있습니다. – stema

2

([0-9]{1,3}B)?([0-9]{1,3}M)?([0-9]{1,3}T)?([0-9]H)?이 소요 충분히 때 하나 이상의

{1,3}

[M]

가 필요하지 않은 대부분의 세 가지 사건에 적어도 한 번 말한다 의미 각 B/M/T에 대해 최대 3 자리 또는 H에 대해 최대 1 자리 (이 순서대로), 각 그룹은 선택 사항입니다. 필요에 맞는 제약 조건을 추가하십시오 ... [0-9]은 반드시 \d과 같지 않습니다. 국가 별 설정 및 내용에 따라 달라집니다.

+0

빈 문자열과 일치합니다 (바람직하지 않을 수도 있음). –

+0

지역 설정을 다른 것으로 변경하면 어떻게 작동하지 않는지 테스트 할 수 있습니까? – prasanna