2

안녕 얘들 아 나는 정규식을 썼습니다 일치하는 일부 패턴에 대한 정규식에 새로운 오전하지만 그것은 매우 긴 정규식 그래서 하나는 나를 최적화하는 데 도움이 될 줄 알았는데?정규식 최적화?

내 REGEX - 나는 일치시킬>

(T)(\d{9})(T)(\s{0,19}\d{0,19}\s{0,19}[0-9DO ]\d{0,19}\s{0,19}[OD0-9 ]\s{0,19}\d{0,19}\s{0,19}\d{0,19}[0-9D ]\d{0,19})(O)(\s{0,5}\d{0,19})\b 

패턴 ->

T062102098T0741 0361212401O 
T011900571T 000007250107O1274 
T065000090T203 93 5797 9O 4037 
T325170628T0108626004D18O01054 
T071108452T 42D896D5O 3587 
T041211609T 01D1270DD4O 2721 
T021407912TO9196D00580D6O 7106 
T081219108T O45D936D4O 3155 
T074909988T O022D853 6O 1340 

내가 피할하고 패턴 ->

T071904779T154505122619 2051 
T065000090T000 32 493O9O 11007 

그래서 어떤 도움이 될 것이다 대단합니다. 미리 감사드립니다.

+0

패턴 일치 또는 회피 논리는 무엇입니까? 아니면 우리가 당신의 (읽을 수없는) 패턴에서 추론하기를 기대합니까? 아니면 예제에서 추측 할 수 있을까요? –

+0

답변이 아니므로 의견을 말씀 드렸습니다.하지만 내가 그대로두고 가면 ... 당신이 가지고있는 표현이 일하는 것 같고 상대적으로 자명 해 보이는 것 같습니다. 정규 표현식에 대해 이야기 할 때 많이 사용됩니다. . – npinti

+0

@npinti 표현식은 ** horrible **이고, \ s {0,19} \ d {0,19} \ s {0,19} \ d {0,19}'비트는 의미가 없습니다. 나는 그것을 밖으로 가져 가서 쏴서 다시 시작했다. –

답변

0

귀하의 정규식은 다음과 같이 오히려 간단하게 할 수있다 (아마도 최적화), 괜찮 : 나는 당신의 정규식에서 발견

(?x) 
    (
     (?:T\d{9}) 
     (?:T\s*\d{0,19}\s*[0-9DO ]\d{0,19}\s*[OD0-9 ]\s*\d{0,19}\s*\d{0,19}[0-9D ]\d{0,19}) 
     (?:O\s*\d{0,19}) 
     \b 
    ) 

한 가지, (...)의 불필요한 사용합니다. 또한, \s{0,19} 또는 \s{0,5}을 사용하는 것은 간단히 \s*으로 기록 될 수 있습니다. 마지막 하나는 0-19 번 또는 0-5 번 사용에 국한되지 않는 경우에만 더 좋습니다.

+1

감사합니다. 도움을 요청하십시오. –