예상 버퍼에서 문자열을 찾는 정규 표현
문제
나는 일련의 탈출 문자와 일치하는 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})