Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c:如何匹配后跟空格和货币的变量字符串并提取货币?_C#_Regex - Fatal编程技术网

C# c:如何匹配后跟空格和货币的变量字符串并提取货币?

C# c:如何匹配后跟空格和货币的变量字符串并提取货币?,c#,regex,C#,Regex,我尝试匹配以下情况并提取数值: "b 30.00" "bill 30.00" "bill 30" "b 30" 我试过: var regex = new Regex("^b(?-i:ill)?$ ^$?d+(.d{2})?$", RegexOptions.IgnoreCase); 但是,这似乎没有返回匹配项,我也不确定如何提取数字。新正则表达式@\b\d+。\d{2}*应该为您提供所需的内容您还不太了解如何使用锚定^&$,请阅读相关内容 var regex = new Regex(@"^[B

我尝试匹配以下情况并提取数值:

"b 30.00"
"bill 30.00"
"bill 30"
"b 30"
我试过:

var regex = new Regex("^b(?-i:ill)?$ ^$?d+(.d{2})?$", RegexOptions.IgnoreCase);

但是,这似乎没有返回匹配项,我也不确定如何提取数字。

新正则表达式@\b\d+。\d{2}*应该为您提供所需的内容

您还不太了解如何使用锚定^&$,请阅读相关内容

var regex = new Regex(@"^[Bb](?:ill)? \d+(?:\.\d{2})?$");
或者更好,因为您只需要ascii数字,而不是世界上所有可能的数字:

var regex = new Regex(@"^[Bb](?:ill)? [0-9]+(?:\.[0-9]{2})?$");
如果你想计算一个文字。您必须以同样的方式为文字$转义它。请注意使用逐字记录字符串以避免双反斜杠

您可以围绕要捕获的内容随意添加捕获组。

只需尝试代码即可

字符串值=票据30.00;
字符串resultString=Regex.MatchValue,@\d+.Value

您没有提到是否需要正则表达式来实现您的目标。如果不需要正则表达式,并且您知道您的字符串采用特定格式,则可以拆分字符串:

string val = "bill 30.00";
string[] split = val.Split(' ');

string name = string.Empty;
decimal currency = 0m;
if (split.Length > 1)
{
    name = split[0];
    decimal.TryParse(split[1], out currency);
}

预期结果到底是什么?我想得到货币值。所以我应该得到30.00或30,但我也需要匹配b或bill,在你的模式开始时是什么?之前delimiter@Shafizadeh:表示该字符串为逐字字符串。C世界中的原始字符串,内部不需要使用双转义。我得到了无法识别的转义序列