[regex] 특정 문자를 제외하고 공백이 아닌 문자를 일치시키는 방법은 무엇입니까?

Perl에서는 \S공백이 아닌 문자와 일치합니다.

백 슬래시를 제외하고 공백이 아닌 문자를 어떻게 일치시킬 수 \있습니까?



답변

문자 클래스를 사용할 수 있습니다 .

/[^\s\\]/

공백 문자 나 \. 다음은 또 다른 예입니다.

[abc]수단 “일치 a, b또는 c“; [^abc]수단 “를 제외한 모든 문자와 일치 a, b또는 c“을.


답변

미리보기를 사용할 수 있습니다.

/(?=\S)[^\\]/


답변

이것은 sed를 사용하여 나를 위해 일했습니다. [ 편집 : 아래의 주석은 sed가 \ s를 지원하지 않음을 지적합니다.]

[^ ]

동안

[^\s] 

하지 않았다

# Delete everything except space and 'g'
echo "ghai ghai" | sed "s/[^\sg]//g"
gg

echo "ghai ghai" | sed "s/[^ g]//g"
g g


답변

내 시스템 : CentOS 5

\s컬렉션 외부에서 사용할 수 있지만 [:space:]컬렉션 내부 에서 사용해야 합니다. 사실 나는 [:space:]컬렉션 내부에서만 사용할 수 있습니다 . 그래서 이것을 사용하여 단일 공간을 일치시키기 위해 나는 [[:space:]]
정말로 이상합니다.

echo a b cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/"

Result: a b cX
  • 내가 일치하는 첫 번째 공간 \s
  • 번갈아 가며 일치하는 두 번째 공간 [[:space:]]
  • “공백없이”와 XI 일치 [^[:space:]]

이 두 가지는 작동하지 않습니다.

a[:space:]b  instead use a\sb or a[[:space:]]b

a[^\s]b      instead use a[^[:space:]]b


답변