루비에서 임의의 정규 표현식에 대한 마지막 (가장 오른쪽) 경기를 찾습니다.

StackOverflow https://stackoverflow.com/questions/814213

  •  03-07-2019
  •  | 
  •  

문제

Ruby의 텍스트 편집기 작업을하고 있으며 사용자가 제공 한 정규 표현 패턴으로 "찾기"기능을 지원해야합니다. 간단한 (친숙한) 사용 사례는 다음과 같습니다.

Joe 사용자는 텍스트 파일을 편집하고 있으며 파일 중간 어딘가에 커서를 배치했습니다. 그는 검색하고 싶어합니다 뒤로 임의의 정규 표현식과 일치하는 가장 가까운 서브 스트링의 현재 커서 위치에서.

이 문제는 파일의 Cursor-Location 이전에 사용자의 패턴을 전체 문자열에 적용하는 것입니다. 물론, 파일의 시작부터 모든 경기를 살펴보고 마지막 경기를 사용할 수는 있지만 이것은 고통스럽게 비효율적으로 보입니다 ... "오른쪽에서 왼쪽"을 검색하는 것이 더 낫지 만 할 방법을 찾지 못했습니다. 이것은 Ruby Regexp와 함께합니다. 도울 수 있니?

도움이 되었습니까?

해결책

문자열에서 rindex 메소드를 사용하십시오. 이와 같이:

>> 'ssBssBss'.rindex(/B/)
=> 5

다른 팁

찾고있는 .*(foo) 또한 욕심 많은 특성 덕분에 가장 오른쪽의 foo를 찾아야합니다.

Rindex가 갈 길이라고 생각합니다. Rindex가 실제로 문자열을 뒤로 반복하는 것 같습니다. 957 행을 확인하십시오 문자열 .C

누군가가 방법을 알아 낸 것 같습니다 정규 표현식을 역전시킵니다 2001 년 Perl에서는 문자열을 뒤집고 Regex를 뒤집습니다. 그런 다음 왼쪽에서 오른쪽 메소드를 사용하십시오.

나는 그것이 지금 과잉이라고 확신하고 당신은 rindex와 함께 갈 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top