【问题标题】:Why the difference between .NET regular expressions and Visual Studio's regular expressions?为什么 .NET 正则表达式和 Visual Studio 的正则表达式有区别?
【发布时间】:2011-03-03 14:03:26
【问题描述】:

我终于找到了对 Visual Studio 的 regular expressions for Find and Replace.NET's regular expression package 的引用,现在出于病态的好奇,我想知道:为什么会有差异!?

我确定有技术、历史或可用性方面的原因,但这让 bajeepers 感到困惑 [sp? ;-) ] 一开始我很生气。

【问题讨论】:

  • 我假设 Visual Studio 使用一些 C++ 实现和 .net 一些 C# 实现(可选地使用 IL codegen)。

标签: .net regex visual-studio-2010


【解决方案1】:

我推测 VS 正则表达式旨在很好地匹配 code,它定义了许多方便的快捷方式,例如用于整个单词的 :w,或用于 C++ 标识符的 :i,或:q 用于引用字符串。

它们通常不需要处理您需要环视断言之类的任意数据。或者至少在优先级列表中较低。

【讨论】:

  • 好主意:知道为什么他们会选择使用冒号作为转义字符吗?我从来没有听说过(并不意味着它不存在)这样做的正则表达式库......
  • 不知道。也许微软不喜欢 Python :)
  • 接受,因为 python 注释和对匹配代码的良好洞察力!
【解决方案2】:

取自 Visual Studio 正则表达式上的链接

注意: 有很多语法差异 在正则表达式之间 可用于查找内容和替换 和那些在 .NET 中有效的 框架编程。例如,在 查找和替换窗口,大括号 {} 用于将表达式标记为 替换:改变每一次出现 of doesn't to does not,你会使用 查找表达式 {does} 和 不替换表达式 \1。这 正则表达式语法不同于 .NET Framework,其中符号 {} 用于量词,因此 表达式 zo{1} 将匹配所有 出现的 z 恰好紧随其后 一个 o,在 zone 但不是在 zoo。

主要区别在于语法,尽管 Visual Studio 确实尝试加入比标准正则表达式库使用的更多功能。

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2013-11-09
    • 2013-10-07
    • 2013-04-16
    • 2021-07-14
    相关资源
    最近更新 更多