c# - 正则表达式匹配没有一些标签的c#

标签 c# regex

我想要精确匹配和前缀通配符匹配,但有一个条件,即它不应被特定标签包围。

例如:如果要匹配的单词是 test ,正则表达式应该匹配 test , testing , tester , testing.aspx但它不应该匹配 test</x>testing</x> , tester</x>以及其他带有前缀 test 的单词

我想出了一个匹配 test</x> 的正则表达式也。

string regex = string.Format("\\b{0}(\\S)*(?!</x>)", "test");

有人可以帮我纠正我的正则表达式吗?

最佳答案

\btest(\S)*(?!</x>)模式匹配 test</x>因为\btest查找以 test 开头的单词,然后匹配并重复捕获任何0+非空白字符,然后检查是否没有 </x>紧邻当前位置的右侧。自 (\S)*匹配整体</x>立即否定前瞻检查 </x>当正则表达式索引已放置在此 </x> 之后时- 因此返回true,匹配成功。

你可以使用

string regex = string.Format(@"(?>\b{0}[^<\s]*)(?!</x>)", "test");
// or, beginning with C#6   
// var regex = $@"(?>\b{SearchWord}[^<\s]*)(?!</x>)";

请参阅regex demo

现在,它将像这样匹配:

  • (?>\btest[^<\s]*) - 原子组匹配
    • \b - 单词边界
    • test - 搜索词
    • [^<\s]* - 除 < 之外的 0+ 个字符和空格
  • (?!</x>) - 如果存在</x>,则匹配失败的负前瞻紧邻当前位置右侧的字符序列

关于c# - 正则表达式匹配没有一些标签的c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838308/

相关文章:

c# - EDF 4.1 代码优先的接口(interface)和多重约束违规

c# - 包含带有计时器的对象的字典。需要找出哪个对象的计时器正在调用 elapsed 事件

c# - 系统.Web.HttpCompileException :The type '<>' is defined in an assembly that is not referenced

php - 我的 sql 查询只返回完全匹配的字符串。有没有办法返回最近的匹配项?

JavaScript正则表达式捕捉汉字

c# - 新 View 或局部 View

c# - Autofac 获取当前标识

javascript - 用于替换标点符号(不包括负数)的正则表达式

regex - 如何从 JSON 响应中提取 2 个字符之间的所有内容?

javascript - 正则表达式模式抛出词法分析器错误 AngularJS