c# - 如何在 C# 中的字符串的特定位置找到正则表达式匹配项?

标签 c# .net regex

我想查明正则表达式是否匹配字符串的特定位置。

例子:

Regex r = new Regex("d");
string s = "abcdefg";

我希望匹配函数在给定的确切位置找到匹配项,以便使用上面的示例,匹配位置135 应该分别给出 no matchmatchno match。不幸的是,C# Regex.Match 方法给出:

r.Match(s, 1); // => match ("d")
r.Match(s, 3); // => match ("d")
r.Match(s, 5); // => no match

我知道这是因为 Regex.Match 方法向前搜索第一个匹配项,但是如何在不必创建子字符串的情况下防止这种行为?

最佳答案

\G 添加到正则表达式的开头:

Regex r = new Regex(@"\Gd");
string s = "abcdefg";
Console.WriteLine(r.Match(s, 1).Success); // False
Console.WriteLine(r.Match(s, 3).Success); // True
Console.WriteLine(r.Match(s, 5).Success); // False

\G 将匹配锚定到上一个匹配结束的位置,或者如果没有上一个匹配则锚定到字符串的开头。使用 Match 的第二个参数,您实际上是在告诉它之前的匹配项,该匹配项在该位置结束。

关于c# - 如何在 C# 中的字符串的特定位置找到正则表达式匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626446/

相关文章:

c# - 将字节数组转换为字符串时得到 'System.OutOfMemoryException'

.net - 为什么 Azure Elastic Sc​​ale 不支持字符串数据类型作为分片键?

JavaScript 正则表达式匹配最外面的匹配括号内的内容?

java - 正则表达式 : filter a character in an expression but not inside the quotation mark

java - 在 Java 正则表达式字符串中查找括号

c# - LINQ 查询为 Entity DB 中的嵌套对象返回 null

c# - 为 WebForms 网站项目添加 MVC 支持

c# - 如何使用正则表达式提取带引号的字符串?或者如何在 c# 中使用这个特定的正则表达式 ("[^"]*\.csv")?

c# - Windows Azure : web application on several instances, 身份验证?

c# - 在 C# 中读取内存中的 Access 数据库