, 나는이 문자열을 분할 및 배열에 결과 문자열을 저장해야나는 다음과 같은 문자열이 패턴 일치
9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat
에 문자열을 분할하는 방법.
결과 문자열은 같을 것이다 다음
이9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat
사람이 나를 도울 수 제발?
, 나는이 문자열을 분할 및 배열에 결과 문자열을 저장해야나는 다음과 같은 문자열이 패턴 일치
9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat
에 문자열을 분할하는 방법.
결과 문자열은 같을 것이다 다음
이9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat
사람이 나를 도울 수 제발?
당신은 분할이 정규식을 사용할 수 있습니다
(?<=pat)\s+
(?<=pat)
확실 하나 이상의 공백이 리터럴 문자열 앞에는하게 lookbehind 정규식입니다 pat
예 :
perl -wpe 's/(?<=pat)\s+/\n/g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"
9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat
대단히 고마워요, 당신은 정규식에 대해 자세히 설명해 주시겠습니까? ? <= pat이 패턴 pat과 일치하고 \ s (문자열을 분할 할 때 이것을 의미할까요?) – user2986175
@ user2986175 : 예 예 바로 앞에 설명이 추가되었습니다. '(? <= pat)은 하나 이상의 공백 앞에 리터럴 문자열 "pat"이 나뉘어 있는지 확인하는 lookbehind 패턴입니다. – anubhava
이 고정 "pat"을 분할 구분 기호로 사용할 수 있습니다.
perl -wpe 's/pat\s/pat\n/g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"
9.2 20268 pat
6.0 24977 pat
4.0 21222 pat
3.9 20854 pat
또는 \K
보기 주변 주장에 대한
perl -wpe 's|pat\K\s|\n|g' <<< "9.2 20268 pat 6.0 24977 pat 4.0 21222 pat 3.9 20854 pat"
.
+1. 나는 가능한 한 복잡한 정규 표현식을 피하는 것을 선호한다. 그리고 이것은 정확히 당신의 대답이하는 것이다. – slayedbylucifer
아직 시도가 있습니까? – Jerry