RegEx를 사용하여 줄의 시작 부분에 다른 문자가 표시되는 경우 한 문자 찾기 및 바꾸기

Daryl Streete

RegEx를 사용하여 텍스트를 찾고 바꿀 수있는 기능을 제공하는 텍스트 음성 변환 소프트웨어 @Voice Aloud Reader를 사용하고 있습니다. 내가하고 싶은 것은 같은 줄의 시작 부분에 다른 문자가 나타나는 경우에만 문자를 바꾸는 것입니다.

예를 들어, 다음 줄이 있다고 가정합니다.

빠른 갈색 여우가 게으른 개를 뛰어 넘습니다.

RegEx 표현식만을 사용하여 "T"로 시작하는지 여부에 따라이 줄의 "e"를 "3"으로 찾아서 바꿀 수 있습니까?

이상적으로는 이러한 표현의 결과는 다음과 같습니다.

Th3 빠른 갈색 여우는 ov3r th3 게으른 개를 점프합니다.

같은 라인에 적용하면

그녀는 문을 열었습니다.

"T"로 시작하지 않는 다른 것에 적용될 때. 이것과 다소 닮은 유일한 것은 lookbehind assertion이지만 판단을 할 때 문제의 바로 뒤에있는 캐릭터 만 확인합니다.

JvdV

@Voice Aloud Reader 정규식 DEELX 엔진을 통해 Perl 호환 정규식 구문을 지원하므로 다음이 작동 할 것이라고 생각합니다.

(?:^T|\G(?!^)).*?\Ke

온라인 데모보기

  • (?: -비 캡처 그룹을 엽니 다.
    • ^T -문자 그대로 시작 문자열 ancor 및 "T"일치.
    • | -또는 :
    • \G(?!^) -이전 경기가 끝날 때 위치를 지정하되 부정적인 예견이있는 문자열의 시작 부분에 위치하지 않도록합니다.
    • ) -캡처하지 않는 그룹을 닫습니다.
  • .*?-0 시간과 무제한 시간 사이에 가능한 한 적은 수의 캐릭터를 캡처하십시오. 게으른 경기!
  • \K -보고 된 경기의 시작 지점을 재설정합니다.
  • e -문자 그대로 "e"와 일치합니다.

참고 : 당신이 교체하려는 경우 @TheFourthBird 사항에 따라, 당신은 더 되돌아을 줄일 수 있습니다 .*?[^e\r\n]*.


다른 옵션은 다음과 같습니다.

^[^T].*(*SKIP)(*F)|e

온라인 데모보기

  • ^ -시작 문자열 앵커.
  • [^T] - "T"이외의 항목과 일치합니다.
  • .* -개행 0 또는 무제한 시간 이외의 모든 문자와 일치합니다.
  • ^(*SKIP)(*F)-역 추적을 허용하지 말고 패턴을 강제로 실패 시키십시오. (*SKIP)이제 왼쪽에있는 모든 문자가 무시됩니다.
  • | -또는 :
  • e -리터럴 "e"와 일치합니다.

편집 :

DEELX정규식 엔진 에서 더 흥미로운 것은 RIGHTTOLEFT"Backward assertion"과 일치 하는 모드 일 수도 있습니다. 이것은 고정 너비의 lookbehind 만 허용하는 Perl과 유사한 구문과는 다릅니다. 문서에서 :

"DEELX는 RIGHTTOLEFT 모드를 사용하여"Backward assertion "과 일치합니다. 후방 assertion은 방향을 제외하고는 lookahead assertion과 동일한 논리를 가지고 있습니다. 따라서 DEELX에서 후방 주장은 고정되지 않은 너비 lookbehind에 대해 작동합니다."

따라서 다음이 작동해야한다고 믿습니다.

(?<=^T.*)e
  • (?<=^T.*) -일치하는 시작 문자열 ancor, 리터럴 "T"및 개행 문자가 아닌 0 개 이상의 문자 뒤에 고정되지 않은 너비 lookbehind.
  • e -리터럴 "e"와 일치합니다.

불행히도 나는 이것을 테스트 할 방법이 없지만 이론은 그것이 작동해야한다고 제안합니다.


모든 옵션을 "3"으로 바꿉니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관