2012-04-21 19 views
0

を小数点以下の値を削除するには、以下のISO 8601形式で:正規表現のタイムスタンプが与えられ

2012-04-21T01:56:00.581550 

の正規どのような表現は、小数点およびミリ秒の精度を削除しますか?つまり、上記に適用され、次のように返し正規表現では:

2012-04-21T01:56:00 

これはおそらく、非常にシンプルですが、ではない正規表現に精通している特定されて、私は解決策をアプローチする方法がわからないと思います。ご協力いただきましてありがとうございます。

答えて

3

regexを使用する必要がある場合は、"[.][0-9]+$"を使用し、空の文字列""に置き換えることができます。 末尾にある'.'を探して、そのインデックスで文字列を切り捨てるほうが簡単です。 C#では、それはあなたが唯一の1つのドットがあるだろうと仮定することができますように見えます

myStr = myStr.Substring(0, myStr.LastIndexOf('.')-1); 
+0

私は正規表現がここにもありそうなエラーを起こしやすいやり過ぎであることに同意します。 –

+0

ありがとう、私は使用している言語で区切り文字に基づいて文字列を分割する方法がありますので、より良い方法であるようです。 – Skoota

0
s/\..*$// 

だろう。上記のsed式はドットを見つけ、そのドットの後ろのすべてを改行なしに置き換えます。 sedをなし

:空の文字列""

\.\..*$を交換リテラル期間である

.*は、任意およびすべての文字を

$手段意味(.は、任意の文字を意味するので、それをエスケープする必要があります)行末

1

この正規表現^[\w\-:]+はm期間を過ぎてそれを排除する。これを使用してタイムスタンプの一部を探してください。

  • ^が文字列の先頭です。
  • \wは「単語」です。
  • \-にハイフンが含まれています。
  • :にはコロンが含まれています。
  • これらは[]に配置され、これらの文字にのみ一致することを意味します。
  • +は、これらの文字の1つまたは複数のインスタンスと一致することを意味します。

期間(.)が含まれていないため、正規表現はそれに到達すると一致を停止します。

1

なぜ正規表現を使いたいですか? 使用の文字列操作Pythonで

>>> "2012-04-21T01:56:00.581550".split(".") 
['2012-04-21T01:56:00', '581550'] 
>>> "2012-04-21T01:56:00.581550".split(".")[0] 
'2012-04-21T01:56:00' 
0

がコード:

$_ = '2012-04-21T01:56:00.581550'; 
s/\.\d*//; 
print $_, "\n"; 

試験:

http://ideone.com/52hij

出力:

2012-04-21T01:56:00