簡體   English   中英

在 C# 中使用 Regex 獲取最后一個逗號或最后一個數字之后的字符串

[英]Get string after the last comma or the last number using Regex in C#

對於此示例,如何使用正則表達式獲取最后一個逗號或最后一個數字之后的字符串:

  • "Flat 1, Asker Horse Sports", -- 在 "," 后得到字符串結果: "Asker Horse Sports"
  • "9 Walkers Barn" -- 在 "9" 結果后得到字符串:Walkers Barn

我需要該正則表達式來支持兩種情況或不同的正則表達式規則,每個 / 情況。

我試過/,[^,]*$/(.*),[^,]*$來獲取最后一個逗號之后的字符串,但沒有運氣。

您可以使用

[^,\d\s][^,\d]*$

請參閱正則表達式演示(和.NET 正則表達式演示)。

細節

  • [^,\\d\\s] - 除了逗號、數字和空格之外的任何字符
  • [^,\\d]* - 除了逗號和數字以外的任何字符
  • $ - 字符串的結尾。

在 C# 中,您還可以使用RegexOptions.RightToLeft選項告訴正則表達式引擎從字符串末尾搜索匹配項(以使正則表達式匹配更高效。盡管在這種情況下,如果輸入字符串很短,則可能沒有必要) ):

var output = Regex.Match(text, @"[^,\d\s][^,\d]*$", RegexOptions.RightToLeft)?.Value;

您在(.*),[^,]*$的捕獲組走在正確的軌道上,但該組應該是您正在尋找的部分。

如果必須存在逗號或數字,您可以匹配直到最后一次出現它們中的任何一個,並捕獲捕獲組中的后續內容。

^.*[\d,]\s*(.+)$
  • ^字符串開始
  • .*匹配除換行符以外的任何字符 0+ 次
  • [\\d,]匹配,或數字
  • \\s*匹配 0+ 個空白字符
  • (.+)捕獲組 1 ,匹配除換行符以外的任何字符 1+ 次
  • $字符串結尾

.NET 正則表達式演示| C# 演示

在此處輸入圖片說明

暫無
暫無

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

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