,정규식을 사용하여 특정 패턴을 찾는 방법은 무엇입니까? 이 경우
(3 [97 98] 100 110 [116 117] 200)
는이 같은 숫자 단어를 선택하고 싶다.
숫자 단어가 [ ]
인 경우 [
다음의 단어와 숫자 단어는 [ ]
에 모두 포함되지 않습니다.
3 97 100 110 116 200
내가 이것을 어떻게 할 수 있습니까?
,정규식을 사용하여 특정 패턴을 찾는 방법은 무엇입니까? 이 경우
(3 [97 98] 100 110 [116 117] 200)
는이 같은 숫자 단어를 선택하고 싶다.
숫자 단어가 [ ]
인 경우 [
다음의 단어와 숫자 단어는 [ ]
에 모두 포함되지 않습니다.
3 97 100 110 116 200
내가 이것을 어떻게 할 수 있습니까?
당신은 gsub
사용할 수 있습니다
s <- "(3 [97 98] 100 110 [116 117] 200)"
gsub("\\[(\\d+).*?\\]|[()]", "\\1", s)
# [1] "3 97 100 110 116 200"
를 작동하는 방법?
gsub
에 사용 된 정규식 그것은 논리 또는 (|
)에 의해 연결된 두 부분으로 구성
\\[(\\d+).*?\\]|[()]
이다.
첫 번째 부분
,\\[(\\d+).*?\\]
는 (괄호 포함) 대괄호 사이에있는 모든 일치합니다. 정규 표현식 \\[
은 [
, \\]
과 일치하며 ]
과 일치합니다. 또한 \\d+
은 하나 이상의 숫자를 의미합니다. .*?
은 임의의 수의 문자와 일치합니다. ?
은 욕심없는 일치를 보장합니다 (예 : ]
까지). 괄호는 일치하는 그룹을 나타냅니다. 여기서 첫 번째 일치하는 그룹은 [
뒤의 첫 번째 숫자 문자열입니다.
번째 부분
,[()]
일치 괄호.
모든 일치 항목은 \\1
, 즉 첫 번째 일치 그룹으로 바뀝니다. 따라서 대괄호 사이의 문자열은이 대괄호 안의 첫 번째 숫자로 바뀝니다. 일치하는 그룹이 없으므로 괄호는 아무 것도 (빈 문자열)로 바뀝니다.
이것은 아마도 귀하가 찾고있는 것일 수 있습니다.
s <- "(3 [97 98] [116 117] 200)"
regmatches(s, gregexpr("[0-9]", s))
나는 정확히 편집을 이해하지 않지만, 업데이트 된 정규 표현식 "[0-9]"
를 교체해야 만한다.
정말 고마워요. 너는 천재 야!!! – user2427306
@Sven Hohenstein 정규 표현식을 사용하는 것은 좋지만, 그것을 번역하고 gsub 표현식 내에서 무엇을하고 있는지 설명해 줄 수 있습니까? –
@PauloCardoso 설명을 추가했습니다. –