정규식을 사용하다가 다음과 같은 매우 이상한 현상을 발견했습니다.
[--\ ]
< /p>
[_-\ ]
< /p>
[=-\ ]
< /p>
즉, 첫 번째는 문자와 일치할 수 없고, 두 번째는 문자와 일치할 수 있으며, 세 번째는 문자와 슬래시와 일치할 수 있습니다.
이러한 특수 문자가 문자열에 나타날 때 바꾸고 싶습니다. 문자조차 대체될 것이라고는 예상하지 못했지만 이 요구 사항을 충족하기 위해 다른 쓰기 방법을 사용할 수 있다는 것을 알고 있습니다. 이런 식으로 쓰는 것이 왜 그렇게 이상한지 모르겠습니다. 위대하신 하나님, 이 규칙을 설명해 드리겠습니다.
맙소사, 아직도 이런 게 있는데, 정규 정규 표현식을 작성하기가 너무 어렵네요
[+-~]
[i-~]
[--~]
[_-~]
[=-~]
...
관심이 있으시면 hello w\o\r\l\d
와 일치시켜 보세요.
우선 첫 번째 예시는 법적 단골이 아니어서 결과가 나오지 않습니다.
다음 두 예제의 정규식은 가장 기본적인
[a-z]
구문입니다. 즉, 한 문자의 모든 문자를 다른 문자 인코딩과 일치시키는 것을 의미합니다.[a-z]
语法,表示匹配从一个字符到另一个字符编码之间的所有字符。两例子中,起始字符分别是
_
、=
, 终止字符都是全角符号ˇ
。全角符号编码大于所有 ASCII 编码,所有在匹配 AscII 编码时都匹配,不用多考虑,我们查下起始字符的 ASCII 编码。
ASCII 编码中:
/
<0-9
<=
<A-Z
<<
_
<a-z
所以,
두 가지 예에서 시작 문자는[=-ˇ]
能匹配大写字母、反斜杠、小写字母,[_-ˇ]
_
및=
이고 끝 문자는 모두 전자 기호ß
입니다.전폭 기호 인코딩은 모든 ASCII 인코딩보다 크며 AscII 인코딩과 일치할 때 모두 일치합니다. 너무 많이 생각하지 않고 시작 문자의 ASCII 인코딩을 확인합니다.
ASCII 인코딩:
🎜그래서/
0-9
=
코드>
<_
a-z
[=- ]
는 대문자, 백슬래시, 소문자와 일치할 수 있고[_- ]
는 소문자만 일치할 수 있으며 둘 다 일치할 수 없습니다. 슬래시와 숫자가 일치합니다. 🎜 🎜 🎜둘째, 이렇게 이상한 정규 표현식은 유지 관리가 어렵기 때문에 작성하지 않는 것이 좋습니다. 🎜