문제

나는 일련의 탈출 문자와 일치하는 regex를 찾으려고 노력하고 있습니다 (기대 응답, 이 질문) 및 6 자리 숫자 (Alpha-Numeric First 캐릭터 포함).

다음은 식별하는 데 필요한 전체 문자열입니다.

\r\n\u001b[1;14HX76196

궁극적으로 문자열을 추출해야합니다.

X76196 

내가 이미 가지고있는 것은 다음과 같습니다.

interact {
        #...
        #...
        #this expression does not identify the screen location
        #I need to find "\r\n\u001b[1;14H" AND "([a-zA-Z0-9]{1})[0-9]{5}$"
        #This regex was what I was using before.
        -nobuffer -re {^([a-zA-Z0-9]{1})?[0-9]{5}$} {
                set number $interact_out(0,string)
        }   

스크린 영역의 필드인지 확인하려면 탈출 문자를 식별해야합니다. 그래서 나는 그 첫 번째 부분을 포함하는 정규식이 필요하지만, 백 슬래시가 나를 혼란스럽게하고 있습니다 ...

또한 $ 숫자 변수의 전체 문자열이 있으면 TCL의 다른 변수에서 숫자를 어떻게 분리합니까?

도움이 되었습니까?

해결책 2

나는 더 파고 들면서 몇 가지를 발견했습니다. 우선 프로그램의 출력이 아니라 사용자의 입력을 보지 않았습니다. 프로그램 출력을보기 위해 "-o"플래그를 추가해야했습니다. 또한 Regex를 필요한 부분으로 단축했습니다.

Regex 예제 @rikh 나 자신이나 내 자신의 성과가 실패한 이유를 살펴 보았습니다. 그것은 내가 출력을보고 있지 않고 입력을보고 있다는 사실 때문이었습니다. 그래서 내가 시도한 원래의 정규식은 잘못이 아니었지만 데이터가 보았습니다 ( "-o"플래그를 누락했습니다)

내 문제에 대한 완전한 대답은 다음과 같습니다.

interact {
#...
    -o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} {
            #get number in place
            set numraw $interact_out(0,string)
            #get just number out
            set num [string range $numraw 6 11] 
            #switch to lowercase
            set num [string tolower $num]
            send_user "  stored number: $num"
    }   
}

나는이다 기대와 tcl을 가진 멍청이 따라서이 중 하나가 이해가되지 않거나 상호 작용 플래그에 대한 통찰력이 더 있으면 똑바로 설정하십시오.

다른 팁

끝에 숫자를 원한다면 충분해야합니다 ...

[0-9]{6}

새로운 정보로 업데이트하십시오

n이 리터럴 가 아닌 새로운 라인 문자라고 가정하면, 당신은 이것을 할 수 있습니다 ...

\r\n\u001B\[1;14H(X[0-9]{5})
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top