Double Commander는 Andrey Sorokin이 작성과무료 라이브러리인 TReg Expr를 사용합니다.
대부분의 설명은 라이브러리과도움말 파일에서 나옵니다.
정규 표현식은 텍스트 검색 모드을 지정하는 널리 사용되는 방법입니다.특수 문자 (메타 문자) 를 사용 하 면 예 를 들 어 찾 고 있 과 특정 문자열 이 줄 의 시작 또는 끝 에 나타나 거나 문자 또는 문자 그룹 과 n 회 나타나 는 것 을 지정 할 수 있 습니다 .
Double Commander는 다음과 같은 기능중 정규식을 지원합니다.
TRegExp 라이브러리는 ANSI와 유니코드의 두 가지 작동 모드를 지원합니다. Double Commander 는 텍스트 파일 중 검색 할 때 둘 다 사용 합니다 (파일 인코딩 에 따라 다름) .길드명 :으로 검색할 때는 유니코드를 사용합니다.
아래에 툴팁과특수한 의미를 과메타 문자가 아니라면 모든 개별 문자는 자체와 일치합니다.
일련의 문자가 목표 문자열중과해당 일련의 문자와 일치하므로 모드bluh목표 문자열중bluh。
메타 문자나 이스케이프 시퀀스 앞에 백슬래시를 넣어\메타문자와 같은 단어로 해석할 수 있습니다.^문자열의 시작과 일치하지만\^일치하는 문자^,\\일치\기다려.
다음은 몇 가지 예입니다.
| 단순 일치 예 | |
|---|---|
| 표현식 | 결과 |
Foobar |
일치 문자열foobar |
FooBar PTR 부근의 호텔 |
일치하다^FooBarPtr |
C 및 Perl중 사용되는 것과 유사한 이스케이프 시퀀스 구문을 사용하여 문자를 지정할 시로코습니다.\n줄 바꿈과 일치합니다.\t탭과 일치합니다.
더 일반적으로,\xnn, 그 중nnASCII 값과 일치하는 16진수 숫자의 문자열입니다.nn과 할 수 있 습니다 .
와이드 (유니코드) 문자 코드 가 필요 한 경우\x{nnnn}, 그 중nnnn –하나 이상의 16진수 숫자
| 이스케이프 시퀀스 | |
|---|---|
| 표현식 | 결과 |
\xnn |
ASCII 코드는nn과 문자 |
\ x {nnn} |
ASCII 코드는nnnn과 (커먼 텍스트 는 1 바이트 , 유니코드 는 2 바이트) |
\t |
탭 (HT/Tab) , 및\x09같 다 |
\n |
줄 바꿈 (NL/LF)\x0a같 다 |
\r |
CR (Return Return) 및\x0d같 다 |
\f |
페이지 변경 기호 (FF)\x0c같 다 |
\a |
경고 (벨 소리) (BEL)\x07같 다 |
\e |
이스케이프 (ESC)\x1b같 다 |
다음은 몇 가지 예입니다.
| 샘플 이스케이프 시퀀스 | |
|---|---|
| 표현식 | 결과 |
foo\x 20 bar |
일치하다foo bar(중간 에 있 과 공백 을 알림 하 십시오 .) |
\tfoobar |
탭에 의해 미리 정의된 과foobar |
문자 목록을 다음과 같이 묶을 시로코습니다.[]중는 목록중과모든 문자와 일치하는 문자 클래스를 지정합니다.
만약[그 다음과첫 번째 문자는^를 클릭하면 목록중 포함되지 않과문자와 일치합니다.
목록 중,-문자는 범위를 지정하는 데 사용되며,a-z출처를 나타냅니다.a도착z포함된과모든 캐릭터.
원 하시 면-클래스과멤버가 되려면 목록과시작 또는 끝에 넣거나 백슬래시로 이스케이프합니다.
사용하고 싶은 경우]목록과시작 부분에 배치하거나 백슬래시로 이스케이프할 시로코습니다.
| 문자 클래스 | |
|---|---|
| 표현식 | 결과 |
[ -az ] |
일치하다a、z및- |
[az-] |
일치a、z및- |
[ a \-z ] |
일치하다a、z및- |
[A-Z] |
일치 대상a도착z26개의 ㄱㄴㄷ순과모두 |
[\n-\x 0 D] |
일치\x10、\x11、\x12、\x13 |
[\d-t] |
일치하는 숫자,-또는t |
[ ] - a ] |
일치 대상]도착a과 모든 문자 |
다음은 몇 가지 예입니다.
| 문자 클래스의 예 | |
|---|---|
| 표현식 | 결과 |
foob[aeiou]r |
문자열 찾기foobar、foober기다리지만 포함되지는 않습니다.foobbr、foobcr기다리다. |
foob[^aeiou]r |
문자열 찾기foobbr、foobcr기다리지만 포함되지는 않습니다.foobar、foober기다리다. |
일부 표현식은 행 구분을 탐지하는 데 도움이 됩니다.
| 행 구분 기호 | |
|---|---|
| 표현식 | 결과 |
^ |
줄의 머리 |
$ |
줄의 끝 |
\A |
텍스트 시작 |
\Z |
텍스트 끝 |
. |
행의중임의 문자 |
다음은 몇 가지 예입니다.
| 행 구분 기호의 예 | |
|---|---|
| 표현식 | 결과 |
↑ 가 나 Foobar. |
문자열 만foobar행 시작 시 일치 |
foobar$ |
문자열 만foobar행 끝에서 일치 |
^ foobar$ |
문자열 만foobar행중 유일한 문자열일 때 일치 |
foob.r |
일치 이미지foobar、foobbr、foob1r동일한 문자열 |
기본 적 으로,^메타 문자 는 입력 문자열/텍스트 과 시작 부분 에서 만 일치 하 도록 보장 됩니다 .$메타 문자는 끝에서만 일치합니다.포함과행 구분자불가능^또는$일치합니다.
그러나 문자열을 여러 줄 버퍼로 취급하고 싶을 수도 있습니다.^문자열 내의과행 구분자 뒤에 일치합니다.$행 구분 기호 상위에 일치합니다. 수정자 m을 펼치기 이를 수행할 시로코습니다.
\A및\Z마치^및$같지만, 수정자 m을 사용하면 여러 번 일치하지 불가능습니다.^및$각 내부 행 구분 기호에서 일치합니다.
기본 적 으로,.메타문자는 임의의 문자와 일치하지만, 표현식 s를 끄면.포함과행 구분자는 일치하지 불가능습니다.
TRegExpr 은 유니코드 기술 표준 (기술 표준 # 18) 에 따라 행 구분 기호 를 처리 합니다 .
^입력 문자열과시작 부분에, 표현식 m펼치기 열려 있으면,\x0D\x0A또는\x0A또는\x0D발생 후 (유니코드 지원 :\x2028또는\x2029또는\x0B또는\x0C또는\x85)。알림 하 십시오,\x0D\x0A시퀀스중 빈 줄이 없습니다.
$그들은 그들의 말을 듣고, 그들의 말을 듣고, 그들의 말을 듣고,\x0D\x0A또는\x0A또는\x0D모든 것 이 나타나 기 전 에 (유니코드 지원 :\x2028또는\x2029또는\x0B또는\x0C또는\x85)。알림 하 십시오,\x0D\x0A시퀀스중 빈 줄이 없습니다.
.모든 문자와 일치하지만, 표현식 s를 닫으면.일치하지 않음\x0D\x0A및\x0A및\x0D유니코드 지원:\x2028및\x2029및\x0B및\x0C및\x85)。
알림하시기 바랍니다.^.*$(빈 행 모드)\x0D\x0A시퀀스중는 비어있음 문자열과 일치하지만\x0A\x0D시퀀스중 비어있음 문자열이 일치합니다.
일부 표현식은 문자 그룹을 탐지하는 데 도움이 됩니다.
| 미리 정의된 클래스 | |
|---|---|
| 표현식 | 결과 |
\w |
ㄱㄴㄷ순 숫자 (포함)_), 즉[0-9A-Za-z_] |
\W |
ㄱㄴㄷ순숫자가 아닌 문자 |
\d |
숫자 문자 |
\D |
숫자가 아닌 문자 |
\s |
공백 문자 ( 및[ \t\n\r\f]동일) |
\S |
공백이 아닌 문자 |
사용자 정의 문자 클래스 중 사용할 시로코습니다.\w、\d및\s。
다음은 몇 가지 예입니다.
| 미리 정의된 클래스의 예 | |
|---|---|
| 표현식 | 결과 |
foob\dr |
일치 이미지foob1r、foob6r동일한 문자열, 포함되지 않음foobar、foobbr기다리다 |
foob[\w\s]r |
일치 이미지foobar、foob r、foobbr동일한 문자열, 포함되지 않음foob=r기다리다 |
단어의 경계(\b(그 쪽 에 는 있 습니다 .\w다른 쪽에는\W문자열의 시작과 끝에 있는 가상 문자가 일치하는 순서대로 두 문자 사이의 포지션\W。
| 단어의 경계 | |
|---|---|
| 표현식 | 결과 |
\b |
일치하는 단어 경계 |
\B |
단어가 아닌 경계 일치 |
정규 표현식과모든 항목은 다른 종류과메타문자 반복기를 따를시로코 습니다.
이러한 메타 문자를 사용하여 상위 문자, 메타 문자 또는 하위 표현식과발생 횟수를 지정할 시로코습니다.
| 반복기 | |
|---|---|
| 표현식 | 결과 |
* |
그들은 그들과 비슷한 것들을 가지고 있습니다.{0,} |
+ |
한 회 또는 여러 번 (탐욕 당) , 비슷 한{1,} |
? |
0 회 또는 한 회 (탐욕 의 파동) , 비슷 한{0,1} |
{n} |
딱 알맞다n탐욕 스럽 다. |
{ n , } |
적어도n탐욕 스럽 다. |
{n , m} |
적어도n회이지만 초과하지는 않는다.m탐욕 스럽 다. |
*? |
0 회 또는 여러 번 (비 탐욕 적 인 파동){0,}? |
+? |
한 회 또는 여러 번 (비 탐욕 적 인) , 비슷 한{1,}? |
?? |
0 회 또는 1 회 (비 탐욕 적 인 파동){0,1}? |
? |
딱 알맞다n탐욕 스럽 지 않 은 것 (Non - 탐욕) |
{n ,} ? |
적어도n탐욕 스럽 지 않 은 것 (Non - 탐욕) |
{n , m} ? |
적어도n회이지만 초과하지는 않는다.m탐욕 스럽 지 않 은 것 (Non - 탐욕) |
그러므로 형식은{n,m}괄호 중과숫자는 항목이 일치하과최소 횟수를 지정합니다.n및 최대 횟수m。
형식{n}이와 같은{n,n}정확히 일치합니다.n회.
형식{n,}일치하다n회 또는 그 이상.
n또는m과크기에는 제한이 없지만 숫자가 대으면 실행 속도가 느려지고 메모리가 더보기 소비됩니다.
대괄호가 기타 컨텍스트중 나타나면 커먼 문자로 간주됩니다.
다음은 몇 가지 예입니다.
| 반복기 예제 | |
|---|---|
| 표현식 | 결과 |
foob.* r |
일치 이미지foobar、foobalkjdflkj9r및foobr동일한 문자열 |
foob.+ r |
일치 이미지foobar、foobalkjdflkj9r동일한 문자열, 포함되지 않음foobr |
Foob..? r |
일치 이미지foobar、foobbr및foobr동일한 문자열, 포함되지 않음foobalkj9r |
fooba {2} r |
일치 문자열foobaar |
fooba {2 ,} r |
일치 이미지foobaar、foobaaar、foobaaaar동일한 문자열 |
fooba {2 , 3} r |
일치 이미지foobaar또는foobaaar동일한 문자열, 포함되지 않음foobaaaar |
탐욕에 과약간의 설명.
탐욕은 가능한 한 많이 취하고, 비탐욕은 가능한 한 적게 취합니다.
예를 들어b+및b*문자열에 적용abbbbc반환bbbb,b+?반환b,b*?비어있음 문자열을 반환합니다.b{2,3}?반환bb,b{2,3}반환bbb。
모든 반복기 를 당 비 탐욕 당 모드 로 전환 할 수 시로코 습니다 (수정 자 g 참조) .
다음을 사용할 시로코습니다.|모드를 지정하기 위해 일련의 재지정을 구분합니다.fee|fie|foe목표 문자열중fee、fie또는foe(f(e|i|o)e그것 도 마찬가지 다 .)
첫 번째 재지정은 이전 모드에서 구분 기호((、[또는 패턴 의 시작) 에서 첫 번 째 로|모든과내용, 마지막 대체 항목은 마지막 항목에서 포함됩니다.|다음 모드 구분 기호까지과모든 내용입니다.
따라서 대체를 괄호중 묶어 시작 위치와 끝 포지션에 과혼란을 최대화하는 것이 일반적입니다.
대체는 왼쪽에서 오른쪽으로 시도되므로 전체 표현식을 일치시키과 첫 번째로 찾은 대체가 선택됩니다.
이것은 대안이 반드시과탐욕스러운 것은 아니라는 것을 의미합니다.
예를 들어, 사용할 때foo|foot일치하다barefoot때, 오직foo부분은 첫 번째 시도에 대한 대안이며 목표 문자열과 성공적으로 일치하기 때문에 일치합니다. (괄호 를 사용 하 여 일치 하 는 텍스트 를 캡 처 할 때 는 중요 하 지 않 을 수 있 습니다 .)
그리고 기억하십시오,|문자 그대로 괄호 안에 있는 것을 의미하며, 만약 여러분이 글을 쓰고 있다면[fee|fie|foe]실제로는 일치만 합니다.[feio|]。
예:
| 대체 예 | |
|---|---|
| 표현식 | 결과 |
foo (bar)| foo) |
일치 문자열foobar또는foofoo |
괄호 구조( ... )정규식 하위 표현식을 정의하는 데도 사용할 수 있습니다.
검색 후에는 모든 하위 표현식을 호출할 수 시로코으며 하위 표현식을 마스크로 사용할 수도시로코습니다.
하위 표현식은 왼쪽에서 오른쪽으로 괄호를 여과순서에 따라 번호진행 매겨집니다.
첫 번 째 하위 표현식 은 번호 가 1 이 고 최대 90 개 의 하위 표현식 을 지원 합니다 (전체 정규 표현식 일치 번호 는 0 입니다) .$0또는$&)。
다음은 몇 가지 예입니다.
| 하위 표현식 | |
|---|---|
| 표현식 | 결과 |
(foobar) |
일치: 8, 9 또는 10개foobar인 스턴스과 문자열 |
Foob ([ 0 - 9 ])| a +) r |
일치하다foob0r、foob1r、foobar、foobaar、foobaar기다리다 |
동적 템플릿으로의 대체에 과주의 사항:
$또는\접두사를 사용하십시오.\。1\$ is $2\\rub\\반환1$ is <subexpr2>\rub\。$n뒤에 원래 숫자를 배치하려면 대괄호를 사용해야 합니다.{}장n묶 다. a$12bc반환a<subexpr12>bc하지만a${1}2bc반환a<subexpr1>2bc。예:
날짜 를21.01.2018거꾸로2018.01.21:
검색:(\d{2})\.(\d{2})\.(\d{4})
교체:$3.$2.$1
메타 문자\1도착\9역 참조로 해석됩니다.\n이전에 일치과하위 표현식 일치n。
다음은 몇 가지 예입니다.
| 역참조 예제 | |
|---|---|
| 표현식 | 결과 |
(.)\ 1+ |
일치aaaa및cc |
(.+)\ 1+ |
또한 일치abab및123123 |
(['"]?) (\ d +) \ 1 |
일치하다"13"(큰 따옴표중 ,'4'(작 은 따옴표중 또는77(따옴표 없음 음) etc . |
긍정적인 미래지향적 단언:foo(?=bar)에서만bar이전 일치foo, 그리고bar일치중 포함되지 않습니다.
부정적인 미래 예측 주장:foo(?!bar)뒤에서만 따르지 않다.bar시 일치foo。
다음과 같은 긍정적인 주장:(?<=foo)bar에서만foo이후 일치bar, 그리고foo일치중 포함되지 않습니다.
부정적인 주장:(?<!foo)bar앞에만 없습니다.foo접두어에서 일치bar。
제한 사항:
앞으로과괄호는 표현식과끝에 있어야 하고, 뒤의 괄호는 표현식과시작에 있어야 합니다.선택은 지원되지 않습니다.|사이 또는 그룹 내에서과주장.
뒷면의 경우(?<!foo)bar, 정규 표현식foo고정 길이여야 합니다. 즉, 고정 길이 일치를 포함하과작업만 포함됩니다.반복되는 숫자를 제외하고는 정량을 사용할 수 없습니다.{n}또는{n,n}과 대괄호.여기서는 문자 클래스를 허용하고, 점을 허용하고, 사용을 허용합니다.\b및\B。그룹 및 선택은 허용되지 않습니다.
기타 3가지 어설션 유형의 경우 괄호 중과표현식은 임의의 복잡도가 될 수 있습니다.
구문:(?:expr)。
이 그룹에는 동적 인덱스가 없으며 역 참조에는 보이지 않습니다.하위 표현식 을 그룹핑 화 하 고 싶 지만 문자열 과 일치/캡처 부분 으로 저장 하 고 싶 지 않 을 때 캡처 되 지 않 은 그룹 을 사용 합니다 .캡처되지 않은 그룹을 사용하면 정규 표현식과작업 속도를 높일 수 있습니다.
| 비캡처 그룹 | |
|---|---|
| 표현식 | 결과 |
https?| ftp) ://([ ^/\ r \ n ] +) |
에서https://doublecmd.sourceforge.io중 일치https및doublecmd.sourceforge.io |
(?: https?| ftp) ://([ ^/\ r \ n ] +) |
에서https://doublecmd.sourceforge.io중만 일치doublecmd.sourceforge.io |
구문:(?>expr|expr|...)。
원자 그룹은 캡처되지 않은 그룹과특수한 경우입니다. 모드과일부가 이미 발견되면 이러한 그룹핑는 괄호 그룹과역추적을 비활성화합니다.원자 그룹은 더 빠르게 작동하며 다양한 표현식을 과그룹을 최적화하는 데 유용합니다.
예를 들어a(bc|b)c일치abcc및abc,a(?>bc|b)c일치하다abcc일치하지 않습니다.abc엔진이 백행을 금지하고 그룹을 다음으로 설정하기하려고 시도하기 때문입니다.b。
유니코드 표준은 문자 범주의 이름을 지정합니다.이것들은 2ㄱㄴㄷ순 문자열입니다.예를 들어,Luㄱㄴㄷ 순 입니다.Llㄱㄴㄷ 순 입니다.그리고 1ㄱㄴㄷ순과대 범주는L그것은 모든 ㄱㄴㄷ순입니다.
| 유니코드 범주 | |
|---|---|
| 범주 | 툴팁 |
L | ㄱㄴㄷ순 |
Lu | ㄱㄴㄷ순 |
l | ㄱㄴㄷ순 |
LT | 제목 ㄱㄴㄷ순 |
Lm | 표현식 ㄱㄴㄷ순 |
Lo | 기타 ㄱㄴㄷ순 |
M | 마크 |
Mn | 비간격 표시 |
Mc | 간격 콤보 태그 |
| 닫기 태그 | |
N | 숫자 |
ND | 10진수 |
NL | ㄱㄴㄷ순숫자 |
No | 기타 숫자 |
P | 문장 부호 |
PC | 커넥터 구두점 |
Pd | 하이픈 구두점 |
P | 오픈 포인트 |
Pe | 닫기 |
Pi | 초기 구두점 |
Pf | 끝 |
포 | 기타 문장 |
| 기호 | S |
Sm | 수학 기호 |
Sc | 통화 기호 |
Sk | 표현식 기호 |
So | 기타 기호 |
Z | 구분 기호 |
Z | 공백 구분 기호 |
Zl | 행 구분자 |
Zp | 단락 구분 기호 |
C | 기타 |
C | 무력화 |
Cf | 형식 |
C | 에이전트 |
Co | 개인 사용 |
Cn | 분배되지 않음 |
메타 문자\p지정된 범주를 나타내과 유니코드 문자.구문:\pL및\p{L}1ㄱㄴㄷ순 길드명 :에 사용되며,\p{Lu}2ㄱㄴㄷ순 길드명 :에 사용됩니다.
메타 문자\P는 역으로, 지정된 범주중 없과 유니코드 문자를 나타냅니다.
이러한 메타문자는 문자 클래스중도 지원됩니다.
단일 표현식과구문:(?i)펼치기를 나타내며,(?-i)닫기를 나타냅니다.다음과 같은 여러 표현식을 사용할 수 있습니다.(?msgxr-imsgxr)。
표현식은 정규식과동작을 변경하는 데 사용됩니다.표현식은 영향만 줍니다.(?imsgxr-imsgxr)연산자 뒤과정규 표현식 섹션입니다.
이러한 표현식 중과하나는 정규 표현식 자체에 포함될시로코습니다.표현식이 하위 표현식중 인라인되면 해당 하위 표현식에만 영향을 줍니다.
^및$문자열의 시작 또는 끝만 일치하는 것에서 문자열 내의 모든 행의 시작 또는 끝과 일치하는 것으로 변경합니다. 행 구분 기호를 참조하십시오.기본적으로 꺼져 있습니다. .모든 문자 , 심지어 행 구분 기호 (행 구분 기호 참조) 와 일치 하 도록 변경 하 면 일반 적 으로 일치 하 지 불가능 습니다 .기본적으로 펼치기 있습니다. g닫기,+작업 과방식 은+?,*작업 과방식 은*?기다리다. а-я추가 러시아어 ㄱㄴㄷ순 포함ё,А-Я추가 포함Ё,а-Я모든 러시아어 ㄱㄴㄷ순가 포함되어 있습니다.기본적으로 펼치기 있습니다. text무시되다. TReg Expr가 보고 있습니다.)을 클릭하여 주석을 닫을 수 있으므로 주석중 문자 그대로 넣을 수 없습니다.)。다음은 몇 가지 예입니다.
| Perl 확장 예제 | |
|---|---|
| 표현식 | 결과 |
(? 1) Saint - Petersburg |
일치하다Saint-petersburg및Saint-Petersburg |
(? i) Saint - (? - 1) Petersburg |
일치하다Saint-Petersburg일치하지 않습니다.Saint-petersburg |
(?성 (Saint) ? Petersburg |
일치Saint-petersburg및saint-petersburg |
((?성 (Saint) ? Petersburg |
일치하다saint-Petersburg일치하지 않습니다.saint-petersburg |
표현식x그 자체로 더보기과 설명이 필요하다.
백슬래시나 문자 클래스중 없과공백을 무시하도록 지시합니다.
정규 표현식 을 (약간) 읽 기 쉬운과 부분 으로 나누 는 데 사용 할 수 있 습니다 .
#문자는 주석을 가져오는 메타문자로도 간주됩니다. 예를 들면 다음과 같습니다.
(
(abc) # 注释1
| # 您可以使用空格来格式化正则表达式 - TRegExpr会忽略它
(efg) # 注释2
)
이것은 또한 모드중 실제과공백을 사용하고 싶다면 또는#문자 (문자 클래스 외부 에서 는 영향 을 받 지 않 음)x영향) 을 받 으려면 이스케이프 하 거나 8 진수 또는 16 진수 이스케이프 를 사용 하 여 인코딩 해야 합니다 .
전반과 이러한 기능은 정규 표현식 텍스트과가독성을 크게 향상시킵니다.