펄 학습 노트 – Building a RegExp
목적: 일치 하 는 숫자 (Numeric) 는 정형 일 수도 있 고 부동 점 일 수도 있 으 며 과학적 인 계수 일 수도 있 고 양음 호 를 가 질 수도 있 습 니 다.
저 는 먼저 전체적인 사 고 를 발췌 하 겠 습 니 다. 이 사 고 는 일치 하 는 숫자 에 국한 되 지 않 습 니 다. 이것 은 정규 표현 식 을 구축 하 는 일반적인 사고 입 니 다.
Step 1: 목적 안에서 이미 비교적 상세 합 니 다. 조금 만 더 보충 하면 우 리 는 다른 각도 에서 고려 할 수 있 습 니 다. 어떤 때 는 한 사물 을 정면으로 표현 하지 못 할 때 부정적인 면 으로 묘사 할 수 있 습 니 다. 예 를 들 어 숫자 와 일치 하지 않 는 다 는 것 은 문자열 과 일치 하지 않 는 다 는 것 을 의미 합 니 다!
Step 2: 서브 문 제 는 목적 에서 도 비교적 명확 하 게 주 었 습 니 다. 모두 두 가지 유형 입 니 다. 정수 와 부동 소수점 입 니 다. 모든 유형 은 과학 계수 법 을 사용 할 수 있 고 플러스 와 마이너스 가 있 을 수 있 습 니 다.그리고 마이너스 번 호 는 반드시 시작 / ^ / 에 나타 나 고 지수 부분 은 반드시 끝 / $/ 에 나타 납 니 다.
Step 3: 양음 호 는 선택 할 수 있 기 때문에 / [+ -]? /.정수 표현 은 / d + / 입 니 다.소수 가 비교적 복잡 하고 세 가지 형식 이 있 는데 예 를 들 면 12, 12, 1.2 이다.이 세 가지 상황 에 대응 하여 정규 표현 식: / d +. /, / d + / 와 / d + d + / 를 각각 작성 합 니 다.그래서 무지 수 부분 에 대한 부동 소수점 표현 은:
/[+-]?(d+.| .d+| d+.d+)/ ,perl - e 'print $1 if 123.45 = ~ / [+ -]?(d+.| .d+| d+.d+)/’;우 리 는 123.45 와 일치 하 기 를 희망 하지만, 결 과 는 123 과 일치 합 니 다.!왜 냐 면 문 제 는 일치 할 때 여러 가지 길 을 선택 할 때 왼쪽 부터 걷 고 통 하기 만 하면 다른 선택 을 하지 않 는 다 는 것 이다.123. 이미 일치 하기 때문에 아래 를 보지 않 겠 습 니 다. 틀 렸 습 니 다!'|' 동작 을 사용 할 때 조심해 야 합 니 다. 가능 한 한 조건 이 엄격 한 표현 식 을 앞 에 두 어야 합 니 다.여기 서 우 리 는 반드시 / d + d + / 를 / d + / 의 앞 에 놓 아야 한다.
-bash-3.00$ perl -e ‘print $1 if 123.45=~/[+-]?(d+.d+|d+.|.d+)/’ 123.45
이제 지수 부분 만 남 았 습 니 다. / ([eE] [+ -]? d +)? /,주의 지수 도 플러스 마이너스 가 있 습 니 다. 그리고 지수 부분 은 선택 할 수 있 습 니 다!
Step 4: 논리 적 으로 이 문 제 는 / ^ (optional sign) (integer | f. p. mantissa) (optional exponent) $/ 로 표현 할 수 있 습 니 다.그래서 마지막 정규 표현 식 은:
/^[+-]?(d+.d+|d+.|.d+|d+)([eE][+-]?d+)?$/
Step5: , , , , -:)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx websocket ip_해시 규칙프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다. 프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다. spring.profiles.active=de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.