
JMP 문자 기능의 무리가 에 등장했습니다. 이전 게시물 : 길이, substr, 포함 등 그들은 간단한 일에 훌륭하고 당신은 ~할 수 있었다 원한다면 그들과 함께 어려운 일을 하십시오. 그러나 Regex가 더 나을 수 있습니다.
정규식, 약어 정규식 는 텍스트 조작을 위한 강력한 JSL 기능입니다.
result = regex( sourceText, searchPattern, replaceTemplate, options );
(JSL에는 이름에 Regex가 포함된 두 가지 다른 함수가 있습니다. 지금은 바닐라 "regex"를 살펴보십시오. 특히 열 수식에서 사용하는 경우 원하는 것입니다.)
이것은 정규식에 대한 매우 불완전한 소개입니다(그러나 JMP의 정규식 함수에 대한 합리적으로 완전한 설명). 웹에서 정규식에 대한 많은 자습서를 찾을 수 있습니다. JMP의 정규식 검색 패턴 Perl의 정규 표현식과 유사합니다.
그만큼 검색 패턴은 정규식 및 찾을 텍스트를 설명합니다. 그만큼 템플릿 교체 일치하는 텍스트가 대체되는 방법을 설명합니다. 일치하는 텍스트의 비트를 사용할 수 있습니다. 템플릿에서. 다음 예에서는 명확성을 위해 첫 번째 인수에 리터럴 문자열(따옴표로 묶음)을 사용하지만 소스텍스트 거의 항상 더 의미가 있습니다.
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 단어 문자.
별표, 더하기 및 물음표는 반복 연산자이며 다음과 같습니다. 탐욕스러운 . 탐욕은 가능한 한 많은 텍스트를 가져온 다음 필요한 경우 나중에 뒤로 물러나는 것을 의미합니다. 그들은 물음표를 추가하여 주저하게 만들 수 있습니다. 일반적으로 탐욕스러운 행동은 원하는 행동이지만 항상 그런 것은 아닙니다.
괄호, 역참조 및 템플릿 교체
정규식의 많은 힘은 검색 패턴 그리고 템플릿 교체 . 상호작용은 \0, \1, \2, ...로 표시되는 역참조를 사용하여 생성됩니다. replaceTemplate 기본값은 "\0"입니다. 역참조 \0은 일치된 전체 텍스트입니다. 괄호는 정규식에서 패턴의 비트를 그룹화하여 더 큰 패턴을 형성하는 데 사용됩니다. 예를 들어
regex( "cat dog catog cadog cat dog", "cat|dog", "***", GLOBALREPLACE)
"*** *** ***오그 카*** *** ***"
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() regex()를 사용한 열 수식
이 예에서는 앵커 ^ 및 $(녹색 밑줄)를 사용합니다. ^는 문자열의 시작과 일치하고 $는 문자열의 끝과 일치합니다. \w*는 0개 이상의 단어 문자와 일치합니다.이 예는 너무 간단할 수 있습니다. 특수 문자나 공백이 있는 이름은 처리하지 않습니다. 역 참조를 사용하여 쉼표로 분할하도록 다시 작업할 수 있습니다. 정규식(이름, "([^,]*)", "\1") 그리고 정규식(이름, "\s*([^,]*)$", "\1") 아마도."([^,]*)" 쉼표가 아닌 0개 이상의 문자를 의미하고 "\s*([^,]*)$" 0개 이상의 공백을 건너뛰고 쉼표가 아닌 모든 항목을 유지하고 끝에 있어야 함을 의미합니다. 에서 "([^,]*)" 경우 \1과 \0은 같습니다. 하지만 에서 "\s*([^,]*)$", \s*가 \1의 괄호 밖에 있기 때문에 \0에는 \1에 없는 선행 공백이 있을 수 있습니다.
정규식에는 더 많은 것이 있으며 웹의 다른 곳에서 잘 설명되어 있습니다(정규식 검색). 역 참조를 사용할 수 있는 방법을 모르는 경우 스크립팅 인덱스의 Alice와 Jerry 예제도 꽤 좋습니다.
다음: 패턴 일치 기능.
2017년 1월 29일 업데이트: 새 커뮤니티의 서식을 수정했습니다.