如何在 C# Regex 中使用“或”、“和”?
Posted
技术标签:
【中文标题】如何在 C# Regex 中使用“或”、“和”?【英文标题】:How can I use "or", "and" in C# Regex? 【发布时间】:2010-09-19 15:23:07 【问题描述】:我有一个与字符串匹配的模式: 字符串模式 = @"asc" 我正在检查 SQL SELECT 查询是否有正确的语法、语义…… 我需要说,在查询字符串的末尾我可以有“asc”或“desc”。 怎么能用 C# 写呢?
【问题讨论】:
【参考方案1】:看起来像
new Regex("asc$|desc$").IsMatch(yourQuery)
假设您要求 asc/desc 是查询的结尾。您也可以使用(?:asc|desc)$
,这与单个$
相比更简洁,但可读性较差。
【讨论】:
【参考方案2】:您需要“交替”运算符,即管道。
例如,我相信这将表示为:
asc|desc
如果你想让它成为一个非捕获组,你可以按照正常方式进行。我不是正则表达式专家,但这是首先要尝试的。
编辑:MSDN 有一个关于 regular expression language elements 的页面,可能会对您有所帮助。
【讨论】:
【参考方案3】:只是为了添加其他答案,您可能还想对正则表达式应用忽略大小写选项。
string tempString = "SELECT * FROM MyTable ORDER BY column DESC";
Regex r = new Regex("asc$|desc$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
bool answer = r.IsMatch(tempString);
【讨论】:
【参考方案4】:我认为以下内容在 .Net 中可以用作正则表达式:
asc|desc\z
.. 它将匹配行尾和字符串尾。如果您只想结束字符串尝试:
asc|desc$
【讨论】:
以上是关于如何在 C# Regex 中使用“或”、“和”?的主要内容,如果未能解决你的问题,请参考以下文章
何时不在 C#(或 Java、C++ 等)中使用 Regex
如何使用 .NET C# regex 或其他任何方法提取 *>...* 之间的文本字符串?
在 C# 中使用 Json.Parse 或 Regex 获取单行 JSON 响应