
여러 JMP 문자 함수가 이전 게시물 : 길이, substr, 포함 등 그들은 단순한 일에 적합하며 당신은 ~할 수 있었다 원한다면 그들과 함께 힘든 일을 하십시오. 그러나 Regex가 더 나을 수 있습니다.
정규식, 줄임말 정규 표현식 , 텍스트 조작을 위한 강력한 JSL 함수입니다.
result = regex( sourceText, searchPattern, replaceTemplate, options );
(JSL에는 이름에 Regex가 있는 두 가지 다른 함수가 있습니다. 지금은 바닐라 "regex"를 살펴보십시오. 특히 열 수식에서 사용하는 경우 원하는 것입니다.)
이것은 정규식에 대한 매우 불완전한 소개입니다(그러나 JMP의 정규식 함수에 대한 상당히 완전한 설명입니다). 웹에서 정규식에 대한 많은 자습서를 찾을 수 있습니다. JMP의 정규식 searchPatterns Perl의 정규 표현식과 유사합니다.
그만큼 searchPattern은 정규식과 찾을 텍스트를 설명합니다. 그만큼 교체템플릿 일치하는 텍스트가 대체되는 방법을 설명합니다. 일치하는 텍스트의 일부를 사용할 수 있습니다. 템플릿에서. 다음 예에서는 명확성을 위해 첫 번째 인수에 리터럴 문자열(따옴표로 묶음)을 사용하지만 소스 텍스트 거의 항상 더 이해가 될 것입니다.
regex( "123 456 789", "[0-9]*")
"123"
이 예에는 두 가지 인수가 있습니다. 소스 텍스트 그리고 검색패턴 . searchPattern은 대괄호를 사용하여 문자 집합을 만듭니다. 하이픈 단축키는 범위를 지정합니다. [a-zA-Z]를 사용하여 모든 대문자 및 소문자 ASCII 문자 세트를 만들 수 있습니다. 별표(*)는 "이전 패턴을 0회 이상 반복"을 의미합니다. \d는 모든 숫자 집합에 대한 바로 가기입니다.
regex( "123 456 789", "\d*")
"123"
[0123456789]와 같은 문자 집합은 모자로 시작하여 부정할 수 있습니다. [^0123456789]는 숫자가 아닌 모든 문자와 일치합니다. \d와 같은 일부 바로 가기는 문자 집합으로 나타낼 수 있습니다.
| \w |
[a-zA-Z0-9_] |
단어 문자 |
| \W |
[^a-zA-Z0-9_] |
단어 문자가 아님 |
| \디 |
[0-9] |
숫자 |
| \디 |
[^0-9] |
숫자가 아님 |
| \에스 |
[ \t\v\f] |
공백에는 탭, 리턴, 개행, 수직 탭 및 양식 공급이 포함됩니다. |
| \에스 |
[^ \t\v\f] |
공백이 아님 |
위의 모든 단축키는 단일 문자와 일치합니다. . 당신은 추가할 수 있습니다 별표
\에스*
실행 일치 0개 이상 공백 문자. 또는 다음을 추가할 수 있습니다. ...을 더한
\D+
실행 일치 하나 이상 숫자가 아닌 문자. 또는 다음을 추가할 수 있습니다. 물음표
\w?
일치하다 0 또는 1 단어 문자.
별표, 더하기 및 물음표는 반복 연산자이며 탐욕스러운 . Greedy는 가능한 한 많은 텍스트를 가져온 다음 필요한 경우 나중에 물러난다는 것을 의미합니다. 그들은 물음표를 추가하여 주저하게 만들 수 있습니다. 일반적으로 탐욕스러운 행동은 원하는 행동이지만 항상 그런 것은 아닙니다.
괄호, 역참조 및 교체템플릿
정규식의 많은 힘은 검색패턴 그리고 교체템플릿 . 상호 작용은 \0, \1, \2, ...로 표시되는 역참조를 사용하여 생성됩니다. replaceTemplate 기본값은 "\0"입니다. 역참조 \0은 일치된 전체 텍스트입니다. 괄호는 더 큰 패턴을 형성하기 위해 패턴의 비트를 함께 그룹화하기 위해 정규식에서 사용됩니다. 예를 들어
regex( "cat dog catog cadog cat dog", "cat|dog", "***", GLOBALREPLACE)
"*** *** ***og ca*** *** ***"
regex( "cat dog catog cadog cat dog", "ca(t|d)og", "***", GLOBALREPLACE)
"고양이 개 *** *** 고양이 개"
세로 막대는 대안을 구분하며 우선 순위가 매우 낮습니다. 두 번째 예는 괄호를 사용하여 t 또는 d를 함께 그룹화합니다. 그만큼 교체템플릿 그냥 상수 텍스트입니다, ***. 그러나 각각의 여는 괄호는 새로운 역참조를 시작하며 템플릿에서 역참조를 사용할 수 있습니다.
regex( "cat dog catog cadog cat dog", "ca(t|d)og", " \1 ", GLOBALREPLACE)
"고양이 개 t d 고양이 개"
GLOBALREPLACE는 정규식이 모든 일치 항목을 찾아 교체하도록 합니다. 패턴은 catog 또는 cadog과 일치합니다. 역참조는 괄호 안에 있는 패턴의 일부이기 때문에 t 또는 d입니다. 템플릿은 \1 값 주위에 약간의 공백을 추가한 다음 일치하는 각 catog 또는 cadog에 대해 템플릿을 대체합니다.
중첩 및 순서대로 여러 괄호 쌍을 사용할 수 있습니다. 뒷 참조 번호를 찾으려면 여는 괄호를 세십시오.
데이터 테이블 수식
다음은 정규식을 사용하는 성, 이름의 예입니다.
Column formula using regex()Column formula using regex()Column formula using regex()Column formula using regex() regex()를 사용하는 열 수식
이 예에서는 앵커 ^ 및 $(녹색 밑줄)를 사용합니다. ^는 문자열의 시작과 일치하고 $는 문자열의 끝과 일치합니다. \w*는 0개 이상의 단어 문자와 일치합니다.이 예는 너무 단순할 수 있습니다. 특수 문자나 공백이 있는 이름은 처리하지 않습니다. 역 참조를 사용하여 쉼표로 분할하도록 재작업할 수 있습니다. 정규식(이름, "([^,]*)", "\1") 그리고 정규식(이름, "\s*([^,]*)$", "\1") 아마도."([^,]*)" 쉼표가 아닌 0개 이상의 문자를 의미하고 "\s*([^,]*)$" 0개 이상의 공백을 건너뛰고 쉼표가 아닌 모든 항목을 유지하고 끝에 있음을 의미합니다. 에서 "([^,]*)" 케이스 \1과 \0은 동일합니다. 그러나 안으로 "\s*([^,]*)$", \s*가 \1의 괄호 밖에 있기 때문에 \0에는 \1에 없는 선행 공백이 있을 수 있습니다.
웹의 다른 곳(regex 검색)에 잘 설명되어 있는 정규 표현식에는 더 많은 것이 있습니다. 역참조가 어떻게 사용될 수 있는지 궁금하다면 스크립팅 인덱스의 Alice와 Jerry 예제도 꽤 좋습니다.
다음: 패턴 매칭 기능.
2017년 1월 29일 업데이트: 새 커뮤니티의 서식을 복구했습니다.