このようなデータがあります。負の符号は数値の末尾の接尾辞です。
"general_amount"
"0000000441244"
"0000000127769-"
"0000000043819"
"0000000522600-"
誰かが私が以下の望ましい出力を生成するための正規表現を見つけるのを手伝ってくれますか?
"general_amount"
441244
-127769
43819
-522600
sub('^0*([^-]*)(-?)$', '\\2\\1', x)
## [1] "general_amount" "441244" "-127769" "43819" "-522600"
^0*
すべての先頭0
文字に一致します。
[^-]*
すべての非-
文字に一致します。
-?
ゼロまたは 1-
文字に一致します。
最後に、$
は文字列の末尾に一致します。
中央の 2 つの部分は、()
、 as \\1
、およびでキャプチャ\\2
され、逆の順序で印刷されます。
別のアイデアでgsubを使用します。
アイデアは、入力を3つの要素に分割することです
「-」を 1 回または 0 回見つけます: (-?)"
as.numeric(gsub("(^0+)([0-9]+)(-?)","\\3\\2",tt))
[1] 441244 -127769 43819 -522600
おい、あなたの質問への答えを見つけるのに3時間かかった
sed -re 's/[^a-zA-Z0-9]0+([0-9]+)(-?)/\2\1/g' anyfile.txt
でも結局やった。近々来るかもしれませんが、私はほぼそれを手に入れました