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);你想要的输出是什么?“捕捉括号内的任何字母。”据我所知,括号内没有字母。。。