Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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# 创建正则表达式模式以验证此示例表达式(.1);_C#_Regex - Fatal编程技术网

C# 创建正则表达式模式以验证此示例表达式(.1);

C# 创建正则表达式模式以验证此示例表达式(.1);,c#,regex,C#,Regex,我正在寻找一些帮助来验证此字符串是否有效。我需要一个正则表达式模式,它将捕获括号集中的所有字母。我还需要确保括号的末尾有一个分号。有什么想法吗?我的正则表达式非常糟糕 这就是我想要匹配的: Total Hours Worked (.5); Total Hours Worked (.A); Total Hours Worked (A); 第一个结果应为false,而最后2个结果应为true 这就是我尝试过的: Match validateLettersAndSemiColon = Regex.M

我正在寻找一些帮助来验证此字符串是否有效。我需要一个正则表达式模式,它将捕获括号集中的所有字母。我还需要确保括号的末尾有一个分号。有什么想法吗?我的正则表达式非常糟糕

这就是我想要匹配的:

Total Hours Worked (.5);
Total Hours Worked (.A);
Total Hours Worked (A);
第一个结果应为false,而最后2个结果应为true

这就是我尝试过的:

Match validateLettersAndSemiColon = Regex.Match(StringToMatch, "[a-z]);");
您的正则表达式是
/\([^]+\)/
/\(.+?\)/
如果没有嵌套括号。即使在同一行中有两个或多个括号组,它也可以工作

如果有嵌套的括号,请使用
/\(.+\)/,但如果在同一行中有两个或多个括号组,则此操作将不起作用

最后,如果您有如下字符串:

 (aba(cc);a);eeee(dd(e););
对于一个正则表达式来说可能很难

编辑1

如果要验证的括号组包含整个字符串,则可以使用
^
标记字符串的开头,使用
$
标记字符串的结尾。因此正则表达式变得

 /^\([^)]+\);$/
您的正则表达式是
/\([^]+\)/
/\(.+?\)/
如果没有嵌套括号。即使在同一行中有两个或多个括号组,它也可以工作

如果有嵌套的括号,请使用
/\(.+\)/,但如果在同一行中有两个或多个括号组,则此操作将不起作用

最后,如果您有如下字符串:

 (aba(cc);a);eeee(dd(e););
对于一个正则表达式来说可能很难

编辑1

如果要验证的括号组包含整个字符串,则可以使用
^
标记字符串的开头,使用
$
标记字符串的结尾。因此正则表达式变得

 /^\([^)]+\);$/

这只是使用以下3个字符串作为输入的示例:

Total Hours Worked (.5);
Total Hours Worked (.A);
Total Hours Worked (A);
我没有考虑任何嵌套的内括号,只是括号内可能的组合是字母和点

下面是一个简单的例子:

string[] data = new string[] { "Total Hours Worked (.5);", "Total Hours Worked (.A);", "Total Hours Worked (A);" };
foreach (string input in data)
{
    Console.WriteLine("Result for:" + input);
    Match match = Regex.Match(input, @"\([a-z.]+\);$", RegexOptions.IgnoreCase);
    if (match.Success)
    {
        Console.WriteLine("YES");
    }
    else
    {
        Console.WriteLine("NO");
    }
}
@“\([a-z.]+\);$”
在括号转义为普通括号之前,
[a-z.]+
意味着我们想要匹配任意数量的字母和点,也可以限制它,但应该给你一个想法。结尾处的
$
表示我们希望它以
结尾

如果要将其限制为第一个括号后的单个点,可以使用下面的正则表达式,它将在

上述结果将是:

Total Hours Worked (.5);
NO
Total Hours Worked (.A);
YES
Total Hours Worked (A);
YES

这只是使用以下3个字符串作为输入的示例:

Total Hours Worked (.5);
Total Hours Worked (.A);
Total Hours Worked (A);
我没有考虑任何嵌套的内括号,只是括号内可能的组合是字母和点

下面是一个简单的例子:

string[] data = new string[] { "Total Hours Worked (.5);", "Total Hours Worked (.A);", "Total Hours Worked (A);" };
foreach (string input in data)
{
    Console.WriteLine("Result for:" + input);
    Match match = Regex.Match(input, @"\([a-z.]+\);$", RegexOptions.IgnoreCase);
    if (match.Success)
    {
        Console.WriteLine("YES");
    }
    else
    {
        Console.WriteLine("NO");
    }
}
@“\([a-z.]+\);$”
在括号转义为普通括号之前,
[a-z.]+
表示我们希望匹配任意数量的字母和点,也可以限制它,但应该给您一个想法。结尾处的
$
表示我们希望它以
结尾

如果要将其限制为第一个括号后的单个点,可以使用下面的正则表达式,它将在

上述结果将是:

Total Hours Worked (.5);
NO
Total Hours Worked (.A);
YES
Total Hours Worked (A);
YES
尝试以下正则表达式:

\([^0-9]+\)\s*;
这将匹配括号内除数字以外的任何字符

我建议把
\s*
放在
之间
允许在大多数编程语言中使用空格。

尝试以下正则表达式:

\([^0-9]+\)\s*;
这将匹配括号内除数字以外的任何字符

我建议把
\s*
放在
之间允许空间。

试试这个

        string[] inputstrings = new string[] { "Total Hours Worked (.5);", "Total Hours Worked (.A);", "Total Hours Worked (A);" };//Collection of inputs.
        Regex rgx = new Regex(@"\(\.?(?<StringValue>[a-zA-Z]*)\)\;{1}");//Regular expression to find all matches.
        foreach (string input in inputstrings)//Iterate through each string in collection.
        {
            Match match = rgx.Match(input);
            if (match.Success)//If a match is found.
            {
                string value = match.Groups[1].Value;//Capture first named group.
                Console.WriteLine(value);//Display captured substring.
            }
            else//If nothing is found.
            {
                Console.WriteLine("A match was not found.");
            }
        }
string[]inputstrings=新字符串[]{“工作总小时数(.5);”,“工作总小时数(.A);”,“工作总小时数(A);”//输入的收集。
正则表达式rgx=新正则表达式(@“\(\.?(?[a-zA-Z]*)\)\;{1}”)//正则表达式来查找所有匹配项。
foreach(inputstrings中的字符串输入)//遍历集合中的每个字符串。
{
匹配=rgx.Match(输入);
if(match.Success)//如果找到匹配项。
{
string value=match.Groups[1].value;//捕获第一个命名组。
Console.WriteLine(值);//显示捕获的子字符串。
}
否则//如果什么也没有找到。
{
Console.WriteLine(“未找到匹配项”);
}
}
是Ideone示例。

试试这个

        string[] inputstrings = new string[] { "Total Hours Worked (.5);", "Total Hours Worked (.A);", "Total Hours Worked (A);" };//Collection of inputs.
        Regex rgx = new Regex(@"\(\.?(?<StringValue>[a-zA-Z]*)\)\;{1}");//Regular expression to find all matches.
        foreach (string input in inputstrings)//Iterate through each string in collection.
        {
            Match match = rgx.Match(input);
            if (match.Success)//If a match is found.
            {
                string value = match.Groups[1].Value;//Capture first named group.
                Console.WriteLine(value);//Display captured substring.
            }
            else//If nothing is found.
            {
                Console.WriteLine("A match was not found.");
            }
        }
string[]inputstrings=新字符串[]{“工作总小时数(.5);”,“工作总小时数(.A);”,“工作总小时数(A);”//输入的收集。
正则表达式rgx=新正则表达式(@“\(\.?(?[a-zA-Z]*)\)\;{1}”)//正则表达式来查找所有匹配项。
foreach(inputstrings中的字符串输入)//遍历集合中的每个字符串。
{
匹配=rgx.Match(输入);
if(match.Success)//如果找到匹配项。
{
string value=match.Groups[1].value;//捕获第一个命名组。
Console.WriteLine(值);//显示捕获的子字符串。
}
否则//如果什么也没有找到。
{
Console.WriteLine(“未找到匹配项”);
}
}

是Ideone示例。

能否添加示例字符串、预期结果和您使用的语言?你的描述用哪种语言很难理解?它是java?C?一个例子是:总工作时间(.5);你想要的输出是什么?“捕捉括号内的任何字母。”据我所知,括号内没有字母。。。