1

このようなデータがあります。負の符号は数値の末尾の接尾辞です。

"general_amount"
"0000000441244"
"0000000127769-"
"0000000043819"
"0000000522600-"

誰かが私が以下の望ましい出力を生成するための正規表現を見つけるのを手伝ってくれますか?

"general_amount"
 441244
-127769
 43819
-522600
4

3 に答える 3

9
sub('^0*([^-]*)(-?)$', '\\2\\1', x)

## [1] "general_amount" "441244"         "-127769"        "43819"          "-522600"

^0*すべての先頭0文字に一致します。
[^-]*すべての非-文字に一致します。
-?ゼロまたは 1-文字に一致します。
最後に、$は文字列の末尾に一致します。

中央の 2 つの部分は、()、 as \\1、およびでキャプチャ\\2され、逆の順序で印刷されます。

于 2013-01-07T00:35:21.293 に答える
1

別のアイデアでgsubを使用します。

アイデアは、入力を3つの要素に分割することです

  1. 0 の系列 :(^0+)
  2. 一連の数字:([0-9]+)
  3. 「-」を 1 回または 0 回見つけます: (-?)"

       as.numeric(gsub("(^0+)([0-9]+)(-?)","\\3\\2",tt))
       [1]  441244 -127769   43819 -522600
    
于 2013-01-07T07:39:27.930 に答える
0

おい、あなたの質問への答えを見つけるのに3時間かかった

sed -re 's/[^a-zA-Z0-9]0+([0-9]+)(-?)/\2\1/g' anyfile.txt 

でも結局やった。近々来るかもしれませんが、私はほぼそれを手に入れました

于 2013-01-07T05:31:25.697 に答える