0

数字を含む可能性のある純粋な数字と単語を含む多くの行で構成される文字列があります。次に例を示します。

1 11 blabla12_ho5::blabla14_ho4

結果が次のようになるように、単語を削除して純粋な数字のみを残したいと思います。

1 11

正規表現 " " を試して[^ ]*[^\d][^ ]*単語をキャッチregsubし、空の文字列を使用してそれらを削除しました。ただし、2 番目の数値もキャッチして、次のように返します。

1

これの正しい正規表現は何ですか?

4

7 に答える 7

2

単語境界の後に一連の数字が続き、その後に単語境界が続く:

\b(\d+)\b
于 2012-08-02T14:42:30.830 に答える
0

grepを使用できます:

echo "1 11 blabla12_ho5::blabla14_ho4" | grep -E -o "\b[[:digit:] ]+\b"
1 11 
于 2012-08-04T13:29:51.547 に答える
0

RegExについて質問しているので、これはあなたの質問に少し接していますが、あなたがしていることについては、最初の2つの列を取得するだけで、Linuxを使用している場合は、次のような簡単なことを行うことができます

cut -d ' ' -f 1-2 myfile.txt
于 2012-08-02T14:58:19.267 に答える
0

異なる RegEx パーサーは、わずかに異なる構文を使用します。この正規表現を何にしようとしていますか?

あなたの質問に対する答えは、貪欲なマッチングと怠惰なマッチングにあります。

于 2012-08-02T14:53:40.550 に答える
0

キャッチ番号とアルファベット (純粋な番号は含まれません):\b(?!\d+\b)\w+\b
キャッチ 純粋な番号:\b(\d+)\b

于 2012-08-02T14:45:21.730 に答える
0

あなたが探しているのはこれに近いです:

/\D(\d+)\D/g
于 2012-08-02T14:42:48.297 に答える
-1

純粋な数字を見つけることなく、文字や数字だけでなく特殊文字を含む単語をなんとかキャッチした正規表現は次のとおりです。

\b[^ ]*[^\d ]+[^ ]*
于 2012-08-04T12:32:13.130 に答える