回答:
文字クラスを使用できます。
/[^\s\\]/
空白文字でもでもないものに一致し\
ます。次に別の例を示します。
[abc]
「一致a
、b
またはc
」を意味します。[^abc]
手段「以外の任意の文字と一致a
、b
またはc
」。
$0~/\s*^\s/
その後に空白でない文字が続く
/^\s+/
-行の始まりで、その後に1つ以上の空白文字が続きます。
g
修飾子を追加します。/[^\s\\]/g
先読みを使用できます。
/(?=\S)[^\\]/
/(?=\S)\W/
THIS IS A TEST, AND AGAIN
。次は私のためにうまくいきました(?=\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
\s
単なるスペース文字以上のものと一致します。これは、TAB、改行キャリッジリターン、および他の人を(どのように含まれる多くの他の人が正規表現の味に依存します)。これはPerlの発明であり、元々はPOSIX文字クラスの省略形であり、では[:space:]
サポートされていませんsed
。上記の最初の正規表現はですs/[^[:space:]g]//g
。
echo "ghai ghai" | sed "s/[^[:space:]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:]]
[^[:space:]]
これら2つは機能しません。
a[:space:]b instead use a\sb or a[[:space:]]b
a[^\s]b instead use a[^[:space:]]b
([^[:space:]])
代わりにを使用しなければならないことは明らかに依然として当てはまります([^\s])
。私はopenSUSE Tumbleweed 2018 04 03に参加しています
^
否定として解釈され、いつ行頭として解釈されますか?その点で、これが空白の数で始まる行と一致しない理由$0~/\s*^\s/