함께 공부하는 Flutter
[DART] 문장기호를 포함한 split
냥냥박사에디
2024. 1. 25. 15:51
반응형
이 정규 표현식 RegExp(r'(?<=\S[.!?])\s')
에 대해 상세히 설명드리겠습니다.
- 전체 표현:
(?<=\S[.!?])\s
- 이 정규 표현식은 두 부분으로 구성되어 있습니다: 룩비하인드 어서션(
(?<=...)
)과 공백 문자(\s
). - 룩비하인드 어서션 (Lookbehind Assertion):
(?<=\S[.!?])
(?<=...)
는 룩비하인드 어서션으로, 이것은 "이 패턴에 일치하는 문자열의 바로 앞에 있는 문자열을 찾으세요"라는 의미입니다.\S
는 공백이 아닌 모든 문자에 일치합니다. 즉, 공백, 탭, 줄바꿈 문자 등을 제외한 모든 문자입니다.[.!?]
는 대괄호 안의 어떤 문자 하나에 일치하는 문자 클래스입니다. 여기서는 마침표(.
), 느낌표(!
), 물음표(?
) 중 하나에 일치합니다.
(?<=\S[.!?])
는 공백이 아닌 문자(\S
) 뒤에 마침표, 느낌표, 또는 물음표 중 하나가 오는 위치를 찾습니다. 예를 들어, "합니다."에서 "다." 부분이 이 패턴에 일치합니다. - 공백 문자:
\s
\s
는 공백 문자에 일치합니다. 여기에는 일반적인 공백, 탭, 줄바꿈 등이 포함됩니다.
결론적으로, 이 정규 표현식 (?<=\S[.!?])\s
는 문장 부호(마침표, 느낌표, 물음표) 바로 뒤에 오는 공백을 찾습니다. 그러나 룩비하인드는 해당 공백이 문장 부호 바로 뒤에 오는 경우에만 일치하기 때문에, 분할된 문자열에는 문장 부호가 포함됩니다. 예를 들어, "이것은 예시입니다. 다음 문장입니다"에서 이 정규 표현식은 ". " 부분에서 일치하게 됩니다.
반응형