찾다

 >  Q&A  >  본문

PHP 정규식 문제가 있나요?

정규식을 사용하다가 다음과 같은 매우 이상한 현상을 발견했습니다.

< /p>

< /p>

< /p>

즉, 첫 번째는 문자와 일치할 수 없고, 두 번째는 문자와 일치할 수 있으며, 세 번째는 문자와 슬래시와 일치할 수 있습니다.

이러한 특수 문자가 문자열에 나타날 때 바꾸고 싶습니다. 문자조차 대체될 것이라고는 예상하지 못했지만 이 요구 사항을 충족하기 위해 다른 쓰기 방법을 사용할 수 있다는 것을 알고 있습니다. 이런 식으로 쓰는 것이 왜 그렇게 이상한지 모르겠습니다. 위대하신 하나님, 이 규칙을 설명해 드리겠습니다.

맙소사, 아직도 이런 게 있는데, 정규 정규 표현식을 작성하기가 너무 어렵네요

관심이 있으시면 hello w\o\r\l\d와 일치시켜 보세요.

왜 이런 일이 발생하나요?

阿神阿神2754일 전399

모든 응답(1)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:09:23

    우선 첫 번째 예시는 법적 단골이 아니어서 결과가 나오지 않습니다.

    다음 두 예제의 정규식은 가장 기본적인 [a-z] 구문입니다. 즉, 한 문자의 모든 문자를 다른 문자 인코딩과 일치시키는 것을 의미합니다. [a-z] 语法,表示匹配从一个字符到另一个字符编码之间的所有字符。

    两例子中,起始字符分别是 _=, 终止字符都是全角符号 ˇ
    全角符号编码大于所有 ASCII 编码,所有在匹配 AscII 编码时都匹配,不用多考虑,我们查下起始字符的 ASCII 编码。

    ASCII 编码中:
    / < 0-9 < = < A-Z < < _ < a-z

    所以, [=-ˇ] 能匹配大写字母、反斜杠、小写字母,[_-ˇ]

    두 가지 예에서 시작 문자는 _=이고 끝 문자는 모두 전자 기호 ß입니다.
    전폭 기호 인코딩은 모든 ASCII 인코딩보다 크며 AscII 인코딩과 일치할 때 모두 일치합니다. 너무 많이 생각하지 않고 시작 문자의 ASCII 인코딩을 확인합니다.

    ASCII 인코딩:
    / 0-9 = 코드> < _ a-z

    🎜그래서 [=- ]는 대문자, 백슬래시, 소문자와 일치할 수 있고 [_- ]는 소문자만 일치할 수 있으며 둘 다 일치할 수 없습니다. 슬래시와 숫자가 일치합니다. 🎜 🎜 🎜둘째, 이렇게 이상한 정규 표현식은 유지 관리가 어렵기 때문에 작성하지 않는 것이 좋습니다. 🎜

    회신하다
    0
  • 취소회신하다