Как сопоставить любой символ без пробела, кроме конкретного?
В Perl S соответствует любому символу.
Как я могу сопоставить любой символ без пробела, кроме обратной косой черты ?
4 ответа:
можно использовать класс персонажа:
/[^\s\]/соответствует всему, что не является символом пробела или
\. Вот еще один пример:
[abc]означает "матчa,bилиc";[^abc]означает " соответствует любому символу, кромеa,bилиc".
Это сработало для меня с помощью sed [Edit: комментарий ниже указывает, что 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: /" Result: a b cX
- первый пробел, который я сопоставляю с
\s- второй пробел я сопоставляю альтернативно с
[[:space:]]- X I соответствует "все, но нет места"
[^[:space:]]эти два не будут работать:
a[:space:]b instead use a\sb or a[[:space:]]b a[^\s]b instead use a[^[:space:]]b