簡體   English   中英

正則表達式在空格之后取第一組,並希望使用相同的正則表達式刪除$

[英]Regex to take first set after Space and want to remove $ with same regex

我的輸入字符串:

“ $ 440,765.12 12-108(e)\\ n3”

我想要的輸出字符串為:-

“440,765.12”

我已經嘗試過使用下面的正則表達式,並且可以正常工作,但是我無法使用相同的正則表達式刪除$,所以有人知道如何使用下面的正則表達式執行相同的任務嗎?

Regex rx = new Regex(@"^(.*? .*?) ");
var match = rx.Match(" $440,765.12  12-108(e)\n3 ");
var text = match.Groups[1].Value;

使用上述正則表達式后的輸出:-$ 440,765.12

我知道我可以使用string.replace函數執行相同的任務,但我只想對regex進行相同的操作。

您可以使用

var result = Regex.Match(s, @"\$(\d[\d,.]*)")?.Groups[1].Value;

參見regex演示

在此處輸入圖片說明

細節

  • \\$ -匹配$ char
  • (\\d[\\d,.]*) -將一個數字捕獲到組1( $1 )中,然后將0個或多個數字,或捕獲. 字符。

如果您想要更“精確”的模式(以防匹配項出現在一些不相關的點或逗號中),則可以使用

\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?)

請參閱此正則表達式演示 在這里, \\d{1,3}(?:,\\d{3})*(?:\\.\\d+)? 匹配1、2或3位數字,后跟0或多個重復,和3位數字,后跟可選的a序列. 字符和1個或多個數字。

另外,如果除$之外可以有其他貨幣符號,則將\\$ $替換\\$與任何貨幣符號匹配的\\p{Sc} Unicode類別

\p{Sc}(\d{1,3}(?:,\d{3})*(?:\.\d+)?)

參見另一個正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM