从VS2013开始,VS使用.NET regex语法,这是更标准的,这是一件好事。
但是,我还没有找到匹配标识符的简写,以前是:i
!
MSDN说:i
已被\b(_\w+|[\w-[0-9_]]\w*)\b
取代...... this short reference也是如此。
真的没有更短的版本吗?
答案 0 :(得分:0)
我们来看看:
C / C ++标识符
theexample.com/sh/fuisd/index.php
表达式的简写(:i
)。匹配任何可能的C / C ++标识符。
匹配标识符
[a-zA-Z_$][a-zA-Z0-9_$]*
匹配\b(_\w+|[\w-[0-9_]]\w*)\b
但不匹配type1
或&type1
。
现在,测试new regex和old 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