카테고리 없음

[루비] 구분자 분할 및 유지

행복을전해요 2021. 2. 17. 15:42

분할 September 1997, such and such이 같은

(?<=\d{4}),\s*

이 출력을 얻어야합니다

September 1997
such and such 

공백을 추가 할 수도 있습니다.

(?<=\d{4})\s*,\s*

가변성과 트리밍을 위해.

-------------------

이것은 한 번만 분할되지만 원하는 것 같습니다.

str = "September 1997, such and such"
p str.match(/(.*?)([0-9]{4}.*)/)
# => #<MatchData "September 1997, such and such" 1:"September " 2:"1997, such and such">

이것은 여러 분할을 수행합니다 ( \bp11y 덕분에 포함하도록 편집 됨)

p str.split(/(?=\b\d{4}\b)/)
# => ["September ", "1997, such and such"]
-------------------

긍정적 인 미리보기를 사용하면 빈 문자열과 소수 ( \d)를 분할 할 수 있습니다 . 이 경우 빈 문자열 뒤에 소수가 와야하지만 소수는 분할의 일부가되지 않습니다.

"September 1997, such and such".split(/(?=\d)/)
#=> ["September ", "1997, such and such"]

정확히 4 자리 소수와 일치해야하는 경우 수량 자 ( {n})를 사용할 수 있습니다.

"September 1997, such and such".split(/(?=\d{4})/)
#=> ["September ", "1997, such and such"]

사이의 공백을 없애려면 \s+빈 문자열 대신 하나 이상의 공백 문자 ( )를 추가로 캡처 할 수 있습니다 .

"September 1997, such and such".split(/\s+(?=\d)/)
#=> ["September", "1997, such and such"]


출처
https://stackoverflow.com/questions/22079823