Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测C++;标识符字符串?_C#_.net_C++ - Fatal编程技术网

C# 如何检测C++;标识符字符串?

C# 如何检测C++;标识符字符串?,c#,.net,c++,C#,.net,C++,例如: 我写了一些快速代码,但失败了: 我的正则表达式是“[a-zA-Z_$][a-zA-Z0-9_$]*” 我只需执行regex.IsMatch(inputString) 谢谢。它应该与一些附加的锚定一起工作: isValidCppIdentifier("_foo") // returns true isValidCppIdentifier("9bar") // returns false isValidCppIdentifier("var'") // returns false 如果你真的

例如:

我写了一些快速代码,但失败了: 我的正则表达式是
“[a-zA-Z_$][a-zA-Z0-9_$]*”
我只需执行
regex.IsMatch(inputString)


谢谢。

它应该与一些附加的锚定一起工作:

isValidCppIdentifier("_foo") // returns true
isValidCppIdentifier("9bar") // returns false
isValidCppIdentifier("var'") // returns false

如果你真的需要使用Unicode支持荒谬的标识符,请随意阅读标准版本的一个版本,并将所有的范围添加到ReGEXP(例如,第713页和第714页)

< P > Matti的答案将在插入C++代码之前对标识符进行消毒,但是不会很好地处理C++代码作为输入。将诸如
L“wchar\u t string”
之类的东西分开会很烦人,因为
L
不是标识符。还有Unicode

,苹果的编译器基于模块化的理念,提供了。看起来您需要
clang\u createTranslationUnitFromSourceFile
clang\u tokenize

我没有检查它是否能处理
\uxxx
或任何东西。不能做任何担保。我上一次使用LLVM是在五年前,它不是最好的体验…但也不是最坏的


另一方面,GCC,尽管您必须弄清楚如何使用。

@JaredPar:它也会丢失使用实现定义字符和其他愚蠢标识符的标识符。是否没有用于匹配cpp标识符的内置内容?我知道在VS搜索中有
:我
。@Stringer:VS不是.NET。谢谢你的回答!实际上,我不需要支持可笑的标识符;)
"^[a-zA-Z_][a-zA-Z0-9_]*$"