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
답변
