簡體   English   中英

正則表達式.NET匹配所有內容,直到找到第一個空格+字母

[英]Regex .NET match everything until first space + letter is found

我有:

01 - Radio N Am 2007 
186508980X -16-17 - Horns and Bones
(ab)normal - constitutions

目標:

Radio N Am 2007 
Horns and Bones
constitutions

我嘗試過

^(?:(?!(?:\S*[\s[a-z][A-Z])).)+

但輸出是:

 - Radio N Am 2007
 - Horns and Bones

請幫助我使用正確的正則表達式以實現目標。

與其嘗試替換,不如將其匹配:

(?<= )[A-Za-z].*

演示

搜索:

^.*?- (?=[A-Za-z])

並替換為空字符串。

正則演示

如果你正在尋找一個正則表達式的解決方案,只會在最后匹配字符串-你可以只使用

-\s*([^-]*$)

觀看演示

如果連字符后面必須有一個字母,則可以使用-\\s*(\\p{L}[^-]*$) \\p{L}構造將匹配任何Unicode字母。

在此處輸入圖片說明

C#IDEONE演示

var lines = new string[] {"01 - Radio N Am 2007", 
"186508980X -16-17 - Horns and Bones",
"(ab)normal - constitutions"};
foreach (string s in lines) 
{
    var matches = Regex.Matches(s, @"-\s*([^-]*$)");
    foreach (Match m in matches)
        Console.WriteLine(m.Groups[1].Value);
}

但是,如果需要在最后一個連字符后獲取子字符串,也可以使用非正則表達式方法:

Console.WriteLine(s.Substring(s.LastIndexOf("-") + 1).Trim());

觀看另一個演示

暫無
暫無

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

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