>source

다음과 같은 문자열이 있습니다 :

var path = "'Ah'This is  a 'sample\'e'";

위의 문자열에서 작은 따옴표 (큰 따옴표 뒤)의 시작과 끝은 예상대로입니다. 즉, "'...............'"; 문자열의 나머지 부분에는 작은 따옴표가 있습니다 (예 : \ '및 대체되지 않음). 작은 따옴표를 바꾸지 않은 곳에서 바꾸어야 할 필요가 있습니다. 이미 이스케이프 된 경우 조치가 필요하지 않습니다. 나는 이것을 대체하기에 적합한 정규식을 찾기가 어렵다. 문자열을 바꾼 후에는 다음과 같아야합니다 (시작 및 끝 작은 따옴표는 바꾸지 않아야합니다.

"'Ah\'This is  a \'sample\'e'";

누군가 도와주세요?

  • 답변 # 1

    사용할 수 있습니다

    s = Regex.Replace(s, @"(?<!\\)(?!^)'(?!$)", @"\'");
    
    

    정규 데모를보십시오. 정규식 그래프 :

    세부 정보

    (?<!\\)   - \ 가 바로 앞에 오지 않는 문자열의 위치와 일치하는 음수 비하인드

    (?!^)  -문자열의 시작 바로 뒤에 오지 않는 문자열의 위치와 일치하는 부정적인 예측 (현재 위치가 문자열의 시작 인 경우 일치하지 않음)

    '  - '  숯불

    (?!$)  -문자열 끝 바로 뒤에 오지 않는 문자열의 위치와 일치하는 제외 미리보기 (현재 위치가 문자열 끝이면 일치하지 않음)

  • 이전 파이썬으로 HTML 테이블에서 색상별로 열을 삭제하는 방법
  • 다음 sql server - SQL 쿼리의 제목을 데이터와 통합하는 방법은 무엇입니까?