모두,
정규 표현식을 좀 더 잘 탐색하려고 합니다. 간단한 Contains()를 사용하여 원하는 것을 달성할 수 있지만 정규식을 사용하여 이에 상응하는 것이 무엇인지 확인하려고 합니다.
내가 가지고 있는 정규식은 내가 기대하는 대로 작동하지 않습니다. 누군가 동등한 정규식을 가리키고 내가 잘못한 것을 설명할 수 있습니까?
Clear Log(); Clear Globals();
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
dt:city[2] = "aLBUQUERQUE";
CityList = dt:City << Get Values;
Des = list();
for(i = 1 , i <= N Items(CityList),i++,
If(!IsMissing(Regex(Char(CityList[i]),"^a|A[LB]*")),
Insert Into(Des,CityList[i]);
);
);
/*for(i = 1 , i <= N Items(CityList) , i++,
If(Contains(CityList[i],"aLB")|Contains(CityList[i],"ALB"),
Insert Into(Des,CityList[i]);
);
);*/
Show(Des);
//Close All(Data Tables,"No Save");지금 당신은 일치하고 있습니다 어느 하나 문자열의 시작 부분에 'a'가 있음('^a') 또는 'A' 다음에 0개 이상의 문자 'L' 또는 'B'('A[LB]*')가 옵니다.참고 사항:
- 또는 주위에 괄호가 없으므로 일치 항목은 '|' 앞이나 뒤의 전체 문자열입니다.따라서 문자열이 'a'로 시작하면 완료되고 다른 항목과 일치하지 않습니다.
- 대괄호는 안에 있는 모든 문자와 일치함을 의미합니다.
- 별표는 0개 이상의 선행 문자 또는 그룹과 일치함을 의미합니다. 이 경우 대괄호 안의 그룹을 의미합니다.
- 함께 or 의 오른쪽은 문자열 내부 어디에서나 다음 중 하나와 일치합니다(처음뿐만 아니라).
- ㅏ
- 알
- AB
- 장백의
- ABL
- ALLLLLLLLLLBLBBBBLLBLLB
- 문자열 aA는 실제로 Regex 함수의 두 가지 다른 일치 항목입니다.
"^(a|A)LB.*$" 또는 "^[aA]LB.*$"를 원할 것입니다.
- 문자열의 시작 부분에서 시작하여 a 또는 A와 일치한 다음
- 문자 LB, 순서대로
- 0개 이상의 문자, 마침표는 임의의 문자(.*),
- 문자열의 끝입니다.이것은 아마도 필요하지 않을 것입니다.
Des = {"ALBANY", "aLBUQUERQUE"};
체크아웃 regexr.com , 코드를 확인하는 데 도움이 될 뿐만 아니라 왼쪽에 좋은 '참조' 및 '치트 시트' 섹션이 있습니다.나는 거의 항상 여러 줄을 켭니다(오른쪽 상단의 플래그).
일치 항목이 문자열 내부 어디에나 있을 수 있음을 명확히 하기 위해 편집되었습니다.