이것은 꽤 간단해야하지만 대답을 찾지도 못하고 그걸 가지고 올 수 없습니다. 나는 항상 한 개 이상의 후행 자릿수 및 잠재적으로 다른 자릿수가있는 String을가집니다. 모든 후행 숫자를 제외한 문자열에서 모든 것을 제거하고 싶습니다. 위의 테스트 케이스가 0,0,3,1
대신 50,10,123,1
가 발생합니다에 대한 그래서 str.replaceAll(".*(\\d)+$","$1")
하지만 불행히도 .*
먼저 일치 :후행 숫자를 제외한 모든 것을 대체 할 정규식
몇 가지 예를 들어, 테스트 케이스 :
"1 test50" -> "50"
"anothertest10" -> "10"
"can contain spaces123" -> "123"
"ok1" -> "1"
나는 가장 눈에 띄는 일을 시도했다.
나는 과거에 거의 사용하지 않았지만 내 문제에 적용하는 방법을 모르지만 뒤에서 무엇인가를 사용해야한다고 생각합니다.
을'참조 정규식 모든 후행 숫자와 일치합니다
을 사용할 수 있습니다 (.? *) (\ D +) $ '[링크] (https : //로 regex101 .com/r/2pkcev/1) – Gurman
기본적으로 문자열 끝의 숫자는'[0-9] + $'패턴과 일치 할 수 있습니다. 왜 당신은'replaceAll'을 사용하기를 원합니까? 편집 : 당신은뿐만 아니라'str.replaceFirst ("(? s) (? :. * \\ D)? (\\ d +) $", "$ 1")' 문자열에서 줄 바꿈 그러나 그것은보기가 번거롭지 않습니까? –
@Gurman 감사합니다! str.replaceAll (". *? (\\ d +) $", "$ 1")'근무했습니다. –