이와 일치하는 정규식을 작성하는 방법\"
(백슬래시 다음 따옴표)? 다음과 같은 문자열이 있다고 가정합니다.
<a href=\"google.com\"> click to search </a>
모든 것을 교체해야 합니다.\"
와"
결과는 다음과 같습니다.
<a href="google.com"> click to search </a>
이것은 작동하지 않습니다:str.replaceAll("\\\"", "\"")
인용문에만 일치하기 때문입니다. 백 슬래시를 사용하는 방법을 잘 모르겠습니다. 백슬래시를 먼저 제거할 수 있었지만 문자열에 다른 백슬래시가 있습니다.
정규식에서 리터럴 \를 쓰려면 "\\\\"를 사용하십시오. 첫 번째 "더블 업"은 문자열 리터럴에서 슬래시를 이스케이프 처리하는 것입니다(따라서 결과 문자열 값은 \\입니다). 그런 다음 첫 번째 슬래시는 정규 표현식 엔진에서 두 번째 슬래시를 이스케이프하므로 \ 문자와 일치합니다. 재미, 응?
user1663902022-01-17 03:24:16백슬래시가 이스케이프 문자인 이스케이프 시퀀스를 포함할 수 있는 문자열을 디코딩하려는 것처럼 들립니다. 입력에 백슬래시-백슬래시-따옴표가 포함된 경우 디코더의 출력은 어떻게 되어야 합니까? 그 경우에 대한 테스트를 작성하십시오.
dnault2022-01-17 03:24:16- 답변 # 1
사전 정의된 문자 클래스 \d, 수량자 등과 같은 정규식 메커니즘이 필요하지 않은 경우
모두 다 바꿔
정규식 사용을 기대하는바꾸다
리터럴을 기대하는str= str.replace("\\\"","\"");
두 방법 모두 모든대상을 대체하지만
바꾸다
문자 그대로 대상을 처리합니다.
하지만 정말 반드시찾고 있는 정규식을 사용해야 한다면
str= str.replaceAll("\\\\\"", "\"")
\
정규식의 특수 문자입니다(예를 들어\디
-숫자를 나타내는 문자 클래스). 정규식을 처리하려면\
일반 캐릭터로 다른 캐릭터를 배치해야 합니다.\
특별한 의미를 끄기 전에 (이스케이프해야 함). 그래서 우리가 만들려고 하는 정규식은\\
.하지만 텍스트를 나타내는 문자열 리터럴을 생성하려면
\\
정규식 엔진에 전달할 수 있도록 4로 작성해야 합니다.\
("\\\\"
), 왜냐하면\
문자열 리터럴의 특수 문자이기도 합니다(다음을 사용하여 작성된 code의 일부)."..."
) 예를 들어 다음과 같이 사용할 수 있기 때문에\티
표를 표시합니다. 그래서 당신도 탈출해야합니다\
거기.간단히 탈출해야 합니다
\
두 배:- 정규식
\\
- 그런 다음 문자열 리터럴에서
"\\\\"
- 정규식
- 답변 # 2
이것을 시도하십시오:
str.replaceAll("\\\\\"", "\\\"")
자바가 대체할 것이기 때문에\
두 배:(1)
\\\\"
-->\\"
(문자열의 경우)
(2)\\"
-->\"
(정규식의 경우) - 답변 # 3
정규 표현식은 필요하지 않습니다.
str.replace("\\\"", "\"")
잘 작동해야 합니다.
바꾸다
이 메서드는 두 개의 하위 문자열을 사용하고 첫 번째 항목의 겹치지 않는 모든 항목을 두 번째 항목으로 바꿉니다. 당:public String replace(CharSequence target, CharSequence replacement)
리터럴 대상 시퀀스와 일치하는 이 문자열의 각 부분 문자열을 지정된 리터럴 교체 시퀀스로 바꿉니다. 대체는 문자열의 시작 부분에서 끝까지 진행됩니다(예:
"아아"
~와 함께"비"
문자열에서"아아"
결과는"바"
보다는"아브"
.
첫 번째 매개변수에 더 많은 백슬래시가 필요합니다. 다소 직관적이지 않은 것처럼 보일 수 있지만 생각해보면 이해가 될 것입니다.
Hovercraft Full Of Eels2022-01-17 03:24:16