반응형
루비 문자열을 캡처된 정규식 패턴으로 바꿉니다.
저는 이것을 루비로 번역하는 데 어려움을 겪고 있습니다.
다음은 제가 원하는 작업을 정확히 수행하는 JavaScript입니다.
function get_code(str){
return str.replace(/^(Z_.*): .*/,"$1");
}
저는 gsub, sub, replace를 시도해봤지만 아무도 제가 기대하는 것을 하지 않는 것 같습니다.
다음은 제가 시도한 작업의 예입니다.
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/) { |capture| capture }
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "$1")
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "#{$1}")
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "\1")
"Z_sdsd: sdsd".gsub(/(.).*/) { |capture| capture }
해라'\1'
교체를 위해 (단일 따옴표가 중요합니다. 그렇지 않으면 탈출해야 합니다.\
):
"foo".gsub(/(o+)/, '\1\1\1')
#=> "foooooo"
그러나 캡처 그룹에만 관심이 있는 것 같으니 정규식으로 문자열을 인덱싱할 수 있습니다.
"foo"[/oo/]
#=> "oo"
"Z_123: foobar"[/^Z_.*(?=:)/]
#=> "Z_123"
\1
이중 따옴표는 피해야 합니다.그래서 당신은 어느 쪽이든 원합니다.
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "\\1")
또는
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, '\1')
"이중 따옴표로 묶은 문자열인 경우, 두 백참조 모두 추가 백슬래시가 선행되어야 합니다."라는 내용의 gsub 문서를 참조하십시오.
그렇긴 하지만, 만약 당신이 단지 경기의 결과를 원한다면 당신은 할 수 있습니다:
"Z_sdsd: sdsd".scan(/^Z_.*(?=:)/)
또는
"Z_sdsd: sdsd"[/^Z_.*(?=:)/]
참고:(?=:)
비선택적인 그룹이기 때문에:
당신의 경기에 나타나지 않습니다.
"foobar".gsub(/(o+)/){|s|s+'ball'}
#=> "fooballbar"
정규식을 사용하여 일부 결과를 필터링한 다음 캡처 그룹만 사용해야 하는 경우 다음을 수행할 수 있습니다.
str = "Leesburg, Virginia 20176"
state_regex = Regexp.new(/,\s*([A-Za-z]{2,})\s*\d{5,}/)
# looks for the comma, possible whitespace, captures alpha,
# looks for possible whitespace, looks for zip
> str[state_regex]
=> ", Virginia 20176"
> str[state_regex, 1] # use the capture group
=> "Virginia"
def get_code(str)
str.sub(/^(Z_.*): .*/, '\1')
end
get_code('Z_foo: bar!') # => "Z_foo"
$
변수는 블록과 일치하도록 설정됩니다.
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/) { "#{ $1.strip }" }
이것은 또한 경기에서 메소드를 호출하는 유일한 방법입니다.일치 항목만 변경되지 않습니다.strip
"\1"(변경되지 않은 것으로 간주):
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "\\1".strip)
언급URL : https://stackoverflow.com/questions/9898461/ruby-replace-string-with-captured-regex-pattern
반응형
'source' 카테고리의 다른 글
단일 파일을 사용한 Python Logging(함수 이름, 파일 이름, 줄 번호) (0) | 2023.06.23 |
---|---|
파이어스토어에 많은 문서를 작성하는 가장 빠른 방법은 무엇입니까? (0) | 2023.06.23 |
도커 경고: 게시된 포트는 호스트 네트워크 모드를 사용할 때 삭제됩니다. (0) | 2023.06.23 |
엑셀에서 비율을 A:B 형식으로 표시하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
R - 패키지 로드 메시지 방지 (0) | 2023.06.23 |