Em Perl \S
corresponde a qualquer caractere sem espaço em branco.
Como posso combinar qualquer caractere diferente de espaço em branco, exceto uma barra invertida \
?
Você pode usar uma classe de personagem :
/[^\s\\]/
corresponde a qualquer coisa que não seja um caractere de espaço em branco nem a \
. Aqui está outro exemplo:
[abc]
meios "match a
, b
ou c
"; [^abc]
significa "corresponder a qualquer caractere exceto a
, b
ou c
".
^
interpretado como negação e quando como início de linha? A esse respeito, por que isso não vai corresponder a uma linha começando com o número de espaços em branco$0~/\s*^\s/
$0~/\s*^\s/
seguido por qualquer caractere que não seja um espaço em branco/^\s+/
- início da linha, seguido por um ou mais caracteres de espaço em branco.g
modificador./[^\s\\]/g
Você pode usar um lookahead:
fonte
/(?=\S)\W/
THIS IS A TEST, AND AGAIN
. O seguinte funcionou bem para mim(?=\S)[^"]*
.Isso funcionou para mim usando sed [ Editar: o comentário abaixo aponta que o sed não é compatível com \ s]
enquanto
não
fonte
\s
corresponde a mais do que apenas o caractere de espaço. Ele inclui TAB, retorno de carro alimentação de linha, e outros (como muitos outros depende do sabor de regex). É uma invenção do Perl, originalmente uma abreviação para a classe de caracteres POSIX[:space:]
, e não tem suporte emsed
. Seu primeiro regex acima deve sers/[^[:space:]g]//g
.echo "ghai ghai" | sed "s/[^[:space:]g]//g"
:g g
No meu sistema: CentOS 5
Posso usar
\s
fora das coleções, mas tenho que usar[:space:]
dentro das coleções. Na verdade, só posso usar[:space:]
dentro de coleções. Então, para combinar um único espaço usando isso, eu tenho que usar o[[:space:]]
que é realmente estranho.\s
[[:space:]]
[^[:space:]]
Esses dois não funcionarão:
fonte
([^[:space:]])
vez de([^\s])
. Estou no openSUSE Tumbleweed 2018 04 03.