>source

이와 일치하는 정규식을 작성하는 방법\"(백슬래시 다음 따옴표)? 다음과 같은 문자열이 있다고 가정합니다.

<a href=\"google.com\"> click to search </a>

모든 것을 교체해야 합니다.\""결과는 다음과 같습니다.

<a href="google.com"> click to search </a>

이것은 작동하지 않습니다:str.replaceAll("\\\"", "\"")인용문에만 일치하기 때문입니다. 백 슬래시를 사용하는 방법을 잘 모르겠습니다. 백슬래시를 먼저 제거할 수 있었지만 문자열에 다른 백슬래시가 있습니다.

첫 번째 매개변수에 더 많은 백슬래시가 필요합니다. 다소 직관적이지 않은 것처럼 보일 수 있지만 생각해보면 이해가 될 것입니다.

Hovercraft Full Of Eels2022-01-17 03:24:16

정규식에서 리터럴 \를 쓰려면 "\\\\"를 사용하십시오. 첫 번째 "더블 업"은 문자열 리터럴에서 슬래시를 이스케이프 처리하는 것입니다(따라서 결과 문자열 값은 \\입니다). 그런 다음 첫 번째 슬래시는 정규 표현식 엔진에서 두 번째 슬래시를 이스케이프하므로 \ 문자와 일치합니다. 재미, 응?

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)
    

    리터럴 대상 시퀀스와 일치하는 이 문자열의 각 부분 문자열을 지정된 리터럴 교체 시퀀스로 바꿉니다. 대체는 문자열의 시작 부분에서 끝까지 진행됩니다(예:"아아"~와 함께"비"문자열에서"아아"결과는"바"보다는"아브".

  • 이전 Ceedling -상수 값을 포함하는 상수 주소 포인터로 함수를 조롱할 때 오류(void const * const)
  • 다음 javascript : REACT에서 스타일이 지정된 구성 요소를 반복하면 "구성 요소에 대해 200개 이상의 클래스가 생성되었습니다"라는 경고가 생성됩니다.