2013-07-25 3 views
0

숫자 열과 일치하는 정규식이 필요합니다. 숫자 열의 각 행에는 소수점 플러스 빼기 및 문자 "e"가 포함될 수도 있고 포함되지 않을 수도 있습니다. 또한 각 열 사이의 공백 수는 둘 이상일 수 있습니다. 그리고 열 수는 고정되어 있지 않습니다.숫자 열과 일치하는 정규식

구문 분석중인 텍스트의 대표 샘플.

#B0 alphanumeric line 26_0000 abc 
#B1 57 115 550.000000 270.000000 
#N 18 
#Labels X Y Something Else Here 
-16.3252 -11.205718 0 2.61836e-07 110 
-16.1728 -10.90549 0 2.61836e-07 87 
-16.0228 -10.605516 0 2.61836e-07 50 
-15.8728 -10.305796 0 2.61836e-07 31 
-15.7229 -10.005822 0 2.61836e-07 49 
-15.5727 -9.705594 0 2.51826e-07 4998 
-15.4228 -9.40562  0 2.71836e-07 176 

Some alphanumeric -14.9729 is 24678 COM at -14.7531 
Sum = 147364 Ave.Mon./Time = 136117 
+1

[당신이 시도 무엇?] (HTTP : // mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

/¥d*(?:\.\d+)*$/가 10 진수와 일치 함을 알고 있습니다. 내가 사용할 수있는 문자 목록은 /[\\\\\-e]/ 그리고 하나 이상의 공백/\ s + /와 일치합니다. 그러나 모든 것을 하나의 정규 표현식으로 결합하는 데 실패했습니다. – mirk

+0

이것을 위해 정규식이 필요합니다. 너는 무엇을 지불하고 있니? 또는 너 자신을 쓰기 위하여 도움을 원한다; 지금까지 무엇을 얻었습니까? – MLeFevre

답변

1

나는

당신은 알고있다 ... 당신이 요구하는지 정확히 좀 불분명 합니다만, 올바른 방향으로 나를 적어도 점을하자이 그 :

\d*(?:\.\d+)* 

은 십진수와 일치합니다.

-?\d*(?:\.\d+)* 

을 그리고 당신은 "전자 ..."말에,과 같이이 번호에 맞게이 더 확장 할 수 : 그래서, 당신은 또한과 같이 음수에 맞게이를 확장 할 수

을 당신이 공백으로 구분 onle이 같은 번호를 포함하는 전체 라인을 검색 할 경우 마지막으로 다음
-?\d*(?:\.\d+)*(?:e-\d+)? 

, 당신은 사용할 수 있습니다

^(?:-?\d*(?:\.\d+)*(?:e-\d+)?\s*)*$ 
+0

감사합니다. 좋은 출발점. 일단 모든 것이 명확 해지면 정확한 해결책을 게시 할 것입니다. – mirk

+0

이것이이 문제의 정확한 해결책입니다. 내가 비틀 거리던 것은 수정 자다. – mirk

관련 문제