홈 디렉토리를 떠날 때 프롬프트를 변경하기 위해 Mac에서 iTerm2 프로필 트리거를 사용하려고 합니다. 이 규칙은 내가 있는 노드의 호스트 이름이 인 경우에만 적용됩니다 headnode
. 프롬프트에는 호스트 이름 뒤의 괄호 안에 컴퓨터 위치도 포함됩니다. .~
따라서 다음과 일치해야 합니다.
[jbutryn@headnode (us-west-a) /]$
하지만:
[jbutryn@headnode (us-west-a) ~]$
or
[jbutryn@headnode (us-west-a) ~/tmp]$
etc.
현재 다음과 같이 정규식을 작성 중입니다.
\[.*\@headnode.*(?!\~).*].
그러나 이는 위의 모든 예와 일치합니다. 내가 뭘 잘못하고 있는지 아는 사람 있나요? 감사해요!
답변1
\[.*\@headnode.*(?!\~).*\]
경기 날짜
[
이어서.*
: 0개 이상의 문자로 구성된 시퀀스, 그 뒤에@headnode
이어서.*
: 뒤에 오지 않는 0개 이상의 문자 시퀀스~
, 이어서.*
: 0개 이상의 문자로 구성된 시퀀스이며 그 뒤에는 다음이 옵니다.]
다음과 일치합니다.
[jbutryn@headnode (us-west-a) ~/tmp]$
그 이유는 다음과 같습니다.
<[><jbutryn><@headnode>< (us-west-a) ~/tmp><><]>$
1 2 3 4 6 7
다음은 4
그렇지 않습니다 ~
.
after 의 첫 번째 단어 뒤와 같이 텍스트의 특정 항목과 일치하는 위치에 부정적인 예측을 배치해야 합니다 @headnode
.
\[.*\@headnode \S+ (?!\~).*\]
답변2
퇴근하다스테판의 고장, 저는 약간 다른 해결책을 제안합니다. 항목 4에 포함된 내용을 중지하는 신호는 단 한 문자 너비이므로 신호 문자를 제외한 모든 문자(이 경우 단일 문자)를 포함하는 클래스를 쉽게 구성할 수 있습니다.
즉, #4의 정규식 부분을 다음으로 바꿉니다.
[^~]*