c# - RegEx - 使用符号匹配但不替换它们

标签 c# regex

我想在 RegEx 模式中使用符号来查找匹配项,但我不想替换它们。这是用于 C# 中的类和命名空间操作。

例如:

MyNamespaceLib.EntityDataModelTests.TestsMyClassTests+MyInnerClassTests

必须替换为:

MyNamespaceLib.EntityDataModel.TestsMyClass+MyInnerClass

(注意,只有“Tests”出现在命名空间部分的末尾时才会被替换,而不是当它是类/命名空间名称的一部分时)

我已经设法找到匹配项的第一部分,但我正在努力将符号保留在替换的匹配项中。

到目前为止我有:

var input = "MyNamespaceLib.EntityDataModelTests.TestsMyClassTests+MyInnerClassTests";

var output = Regex.Replace(input, "Tests[.+]|$", "");

我试过使用非捕获组,但我怀疑它不适合我尝试使用它的方式。

谢谢!

最佳答案

所以您想要做的是替换匹配项不是,然后是 .+?使用 lookahead :

@"Tests(?![.+])"

关于c# - RegEx - 使用符号匹配但不替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026233/

相关文章:

c# - 使用不同的构造函数实例化新对象

C# 将 dd/MMMM/yyyy 转换为 yyyymmdd(俄语)

c# 应用程序 FTP 错误 : "227 Entering Passive Mode"

c# - C# 和 javascript 中的正则表达式

javascript - 正则表达式查找和替换冒号内的表情符号名称

c# - 找出 C# 中的对象使用了多少内存?

c# - 注册表单中的密码文本框对页面加载有一定的值(value)

regex - perl - 将字符串拆分为 2 个字符的组

java - 无法在 java 中获取日期正则表达式 mm/dd/yyyy

php - 使用 preg_match 检测 url?没有 http ://in the string