우선, [\d]{1}
\d
는 동일하다.
귀하의 질문에 대해서는 lookbehind/lookahead 또는 단어 경계 (\b
)와 같은 제로 너비 어설 션을 사용하는 것이 좋습니다. 그렇지 않으면 두 번째 숫자의 선행 공백이 첫 번째 숫자의 후행 공백으로 일치하므로 중복되는 한자리 숫자와 일치하지 않습니다. 여기
내가이에 다음과 같이 쓸 수있다 :
이 "그 전에 공백이 아닌 문자가없고, 공백이 아닌 문자가 뒤에가없는 경우에만 숫자 일치"를 의미
(?<!\S)\d(?!\S)
.
(?=\s)
대신 (?!\S)
처럼 이중 음수를 사용 했으므로 문자열의 시작 또는 끝에있는 하나의 숫자도 일치시킵니다. 당신이 정말로 유일한 자리는 공백으로 둘러싸여있을 경우이를 일치시킬 및 \b\d\b
허용하려면 192.168.4.5
같은 문자열의 4
과 5
일치하는 것처럼 보이기 때문에
나는 당신의 예를 들어 \b\d\b
이상이 선호
이
(?<!\S)\d(?![^\s.,?!])
당신이 대괄호 안에 문자 클래스로 자리 (이후에 허용 할 추가 문장 부호 문자를 추가하지만 일 이후 확인 : 마지막 문장은 다음과 같은 사용할 수 있습니다 e ^
).
당신 여기에 몇 가지 특별한 경우가 누락되었습니다. 숫자가 처음과 끝 부분에 있고 문자열의 한 자리 숫자 일 때. – abc667