Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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#_Regex - Fatal编程技术网

正则表达式模式不适用于我的C#代码,但它适用于在线测试仪

正则表达式模式不适用于我的C#代码,但它适用于在线测试仪,c#,regex,C#,Regex,我想从包含特定关键字的字符串中提取双精度值。例如: 金额:3747190.67美元 我需要使用关键字Amount从上面的字符串中提取值“3747190.67”,因为我在不同的在线Regex测试仪中测试了这个模式,它可以工作: (?<=\bAmount.*)(\d+\,*\.*)* (?这一个有效: (?这一个有效: (?lookback(?lookback)(?请显示您的C代码。它为我提供了一个在线测试程序。另外,请格式化您的问题,它很难阅读。还请向我们展示它在在线Regex测试程序中的

我想从包含特定关键字的字符串中提取双精度值。例如:

金额:3747190.67美元

我需要使用关键字Amount从上面的字符串中提取值“3747190.67”,因为我在不同的在线Regex测试仪中测试了这个模式,它可以工作:

(?<=\bAmount.*)(\d+\,*\.*)*
(?这一个有效:

(?这一个有效:


(?lookback
(?lookback
)(?请显示您的C代码。它为我提供了一个在线测试程序。另外,请格式化您的问题,它很难阅读。还请向我们展示它在在线Regex测试程序中的工作情况(因为它不适用于我)在将正则表达式粘贴到您的问题中时,请特别注意使用代码示例工具。目前,一些字符被用作标记格式说明,虽然其他人可以尝试恢复原始代码,但您可以更轻松地以正确的状态提供它。我使用了以下链接o我的测试,请展示你的C#代码。我有一个在线测试仪。另外,请格式化你的问题,它很难阅读。同时向我们展示它在在线Regex测试仪中的工作情况(因为它不适用于我)在将正则表达式粘贴到您的问题中时,请特别注意使用代码示例工具。目前,一些字符被用作标记格式说明,虽然其他人可以尝试恢复原始代码,但您可以更轻松地以正确的状态提供它。我使用了以下链接o我的测试和我使用的是activebatch电子邮件触发器,因此当我收到带有特定主题的电子邮件时,activebatch会将电子邮件正文作为参数发送给我的应用程序,然后我会解析正文并提取必要的值和日期。问题是正文作为一句话发送(行与行之间没有分隔\n)而在评论中发布的模式对我不起作用。例如:
亲爱的各位,请注意我们将增加资产净值基金-PIPANTUM:1031299.03美元旧的已分配资产总额:386235863.55美元新的估计*已分配资产总额:387267162.58美元
@GtariAbir尝试省略单词边界
(?谢谢你的帮助,我刚刚删除了\b最后
(?你能帮我提取日期吗?我正在尝试这种模式
(?非常感谢,你帮了我很大的忙。我正在使用activebatch电子邮件触发器,因此当我收到一封带有特定主题的电子邮件时,activebatch会将电子邮件正文作为参数发送到我的应用程序,然后我会解析正文并提取必要的值和日期。问题是正文作为一句话发送(行之间没有分隔\n)而在评论中发布的模式对我不起作用。例如:
亲爱的各位,请注意我们将增加资产净值基金-PIPANTUM:1031299.03美元旧的已分配资产总额:386235863.55美元新的估计*已分配资产总额:387267162.58美元
@GtariAbir尝试省略单词边界
(?谢谢你的帮助,我刚刚删除了\b最后
(?你能帮我提取日期吗?我正在尝试这种模式
(?非常感谢,你帮了我很大的忙。)
if (type == typeof(double))
{
    double doubleVal = 0;
    pattern = @"(?<=\bAmount.*)(\d+\,*\.*)*";
    matchPattern = Regex.Match(textToParse, pattern);

    if (matchPattern.Success)
    {
        double.TryParse(matchPattern.Value.ToString(), out doubleVal);
    }
    return doubleVal;
}
(?<=\bAmount\D*)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?\b
double doubleVal = 0;
var pattern = @"(?<=\bAmount\D*)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?\b";
var textToParse = "Amount : USD 3,747,190.67";
var matchPattern = Regex.Match(textToParse, pattern);
if (matchPattern.Success)
{
    double.TryParse(matchPattern.Value.ToString(), out doubleVal);
}
Console.WriteLine(doubleVal);
3747190.67
(?<=Amount\D*)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?