[英]C# Regex Match text until specific character
我試圖得到一個正則表達式來驗證/提取字符串中的所有字符,直到第一美元。 如果字符串沒有任何美元,則應與整個字符串匹配,但不起作用。
我測試的是:
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match("12345678$1", "/[^\$]*/");
我期望得到的是match.value => 12345678如果傳遞的字符串是例如123456781,則它應該返回所有內容。
怎么了?
致以最誠摯的問候。
您忘了逃避\\
:
Match match = Regex.Match("12345678$1", "[^\\$]*");
Console.WriteLine(match.Value);
match = Regex.Match("123456781", "[^\\$]*");
Console.WriteLine(match.Value);
輸出:
12345678
123456781
正如dolgsthrasir指出的那樣,您無需在正則表達式中轉義$
,因此"[^$]*"
就可以了。
試試這個
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match("12345678$1", "([^\\$]+)");
提取的字符串應為組1。
從我得到的結果來看,您正在使用的表達式將匹配由0個或多個任何非$
實例組成的字符串。
您可以嘗試以下操作:
string sample = "1234578";
Regex regex = new Regex("(.+?)(\\$|$)");
if (regex.IsMatch(sample))
{
Match match = regex.Match(sample);
Console.WriteLine(match.Groups[1]);
}
它將匹配並提取任何數字,直到$
(表示為\\\\$
),否則將提取字符串的末尾(表示為$
),以先到者為准。
您不需要正則表達式,只需使用IndexOf
和SubString
var str = "12345678$1";
int index = str.IndexOf("$");
if(index < 0)
return str;
else
return str.Substring(0, index);
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match("12345678$1", "(.+)\\$");
您的結果將在match.Groups [1]中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.