C# 需要正则表达式逻辑来查找字符串

C# 需要正则表达式逻辑来查找字符串,c#,C#,我想从一个句子中找到一个特殊的字符串 给定字符串: 在给定的健康计划中,您的计划名称:医疗和计划类型:PPO,其生效日期:2019-01-01,保险价值分别为100美元和200美元 如果我通过计划名称:那么我的输出将是医疗。 如果我通过了Plan Type:那么我的输出将是PPO。 如果我通过生效日期:那么我的输出将是2019-01-01。 如果我通过覆盖率值,那么在这种情况下,我需要两个值。 最小值为100美元,最大值为200美元。 同样,我需要一个给定句子的电子邮件地址。可能有这样一种情况,

我想从一个句子中找到一个特殊的字符串

给定字符串:

在给定的健康计划中,您的计划名称:医疗和计划类型:PPO,其生效日期:2019-01-01,保险价值分别为100美元和200美元

如果我通过计划名称:那么我的输出将是医疗。 如果我通过了Plan Type:那么我的输出将是PPO。 如果我通过生效日期:那么我的输出将是2019-01-01。 如果我通过覆盖率值,那么在这种情况下,我需要两个值。 最小值为100美元,最大值为200美元。 同样,我需要一个给定句子的电子邮件地址。可能有这样一种情况,我只需要从给定的句子中提取一个日期、电子邮件或数字值。在这种情况下,我没有任何以前的值可匹配

我需要一个包含上述所有要求的正则表达式逻辑。

请尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication118
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "In a given health plan your Plan Name: Medical and Plan Type: PPO whose effective date: 2019-01-01 and coverage value $100 and $200";
            string pattern = @"(?'key'\w+):\s+(?'value'[-\d\w]+)|(?'key'\w+)\s+(?'value'\$\d+\s+and\s+\$\d+)";

            MatchCollection matches = Regex.Matches(input, pattern);

            Dictionary<string, string> dict = matches.Cast<Match>()
                .GroupBy(x => x.Groups["key"].Value, y => y.Groups["value"].Value)
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

            foreach (Match match in matches)
            {
                Console.WriteLine("Key : '{0}', Value : '{1}'", match.Groups["key"].Value, match.Groups["value"].Value);
            }
            Console.ReadLine();
        }
    }
}

好的,那么问题出在哪里呢?这些输入字符串是否总是相同的长度/结构?你试了什么?然而:基本上是一个接一个的早午餐。和一个子串。归结起来就是:文本在字符串中吗?在索引+长度字符串之后,下一个空格在哪里?那之后的下一个空间呢?我想要这两个空格之间的字符串。我投票以主题外的方式结束这个问题,因为这不是一个为给定句子中类似的“我需要”电子邮件地址编写代码的服务。句子中没有电子邮件是没有意义的,电子邮件也不简单。查看rfc中的电子邮件,准备好让您的头脑清醒。欢迎来到StackOverflow!分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: