누락 된 아포스트로피를 삽입하는 데 사용할 수있는 정규식 및 대체 문자열을 작성하려고합니다. 예 :
하지마-> 하지마
Ill-> Ill
캡처 그룹에서이 작업을 수행 할 수 있지만 .Replace를 한 번만 호출하면됩니다. 지금은 다음과 같습니다.
$apostropheregex = '\b((didn|won|ain|don)(t)|(i)(ll|m))\b'
$apostrophereplacement='$2$4''$3$5'
그러나 우리가 둘 중 하나만 일치한다는 가정하에 접두사 그룹과 두 접미사 그룹을 함께 으깨는 것은 추한 느낌입니다 ( "ll"또는 "t"일치).
누구에게 제안이 있습니까? 이 문제에 접근하는 더 좋은 방법이 있습니까? 실제로 이것을 두 개의 별도 시나리오로 취급하고 별도의 정규식 및 교체 문자열로 두 번 교체를 실행해야합니까?
업데이트 : 명확히하기 위해, 영어 문법적 맥락을 고려하지 않기 때문에 대체해서는 안되는 문자열을 대체하여 의도하지 않은 결과를 초래할 수 있다는 것을 알고 있습니다. 문자열을 먼저 검토 한 후 수동으로 실행 중이며 여전히 흥미로운 질문이라고 생각합니다.
그냥 참고 :이이 병이 ... 적합 병이 적합 하게되는, 내가 적합합니다 .
그러나 더 나은 정규식을 요청하면받을 수 있습니다. 다음을 사용합니다.
\b(?|(don)(t)|(won)(t)|(you)(re))\b
교체는입니다 $1'$2
.
이 정규식의 주요 장점은 가독성입니다. 새로운 변경 사항을 쉽게 추가 할 수 있어야합니다.
분기 재설정 그룹을 사용하여 작동합니다 (?| )
. 이 수단은 각 교대 용도 $1
및 $2
(대신 2N + 1, 2N + 2).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다