使用Visual Studio正则表达式匹配标识符的简写

时间:2015-09-16 17:36:51

标签: .net regex visual-studio visual-studio-2013

从VS2013开始,VS使用.NET regex语法,这是更标准的,这是一件好事。

但是,我还没有找到匹配标识符的简写,以前是:i

MSDN:i已被\b(_\w+|[\w-[0-9_]]\w*)\b取代...... this short reference也是如此。

真的没有更短的版本吗?

1 个答案:

答案 0 :(得分:0)

我们来看看:

VS2005-2010

  

C / C ++标识符
  theexample.com/sh/fuisd/index.php
  表达式的简写(:i)。匹配任何可能的C / C ++标识符。

VS2012-2015

  

匹配标识符
  [a-zA-Z_$][a-zA-Z0-9_$]*
  匹配\b(_\w+|[\w-[0-9_]]\w*)\b但不匹配type1&type1

现在,测试new regexold regex。结果相同,都匹配#define&type1。不知道是否有意。

然而,当缩短时,#define几乎等于.NET中的[\w-[0-9_]]\p{L}没有0-9和下划线,但仍然匹配一些印地语和其他一些位)。我猜\w实际意味着,您可以使用\b(_\w+|\p{L}\w*)\b

如果您不想与\p{L}&type匹配,则需要look-behind version

#define

或者 - 或许 - 与a whitespace check before the word

\b(?<![&#])(_\w+|\p{L}\w*)\b