我正在尝试将字符串拆分为标记(通过正则表达式) 通过以下方式:
示例#1
输入字符串:'hello'
第一个标记:'
第二个标记:hello
第三个标记:'
示例 #2
输入字符串:'hello world'
第一个标记:'
第二个标记:hello world
第三个标记:'
示例 #3
输入字符串:hello world
第一个标记:hello
第二个标记:world
即,仅当字符串不在单引号中时才拆分字符串,并且单引号应在其自己的标记中。
这是我目前所拥有的:
string pattern = @"'|\s";
Regex RE = new Regex(pattern);
string[] tokens = RE.Split("'hello world'");
这适用于示例 #1 和示例 #3,但不适用于示例 #2。 我想知道理论上是否有一种方法可以用正则表达式实现我想要的东西
最佳答案
您可以构建一个简单的词法分析器,这将涉及一个接一个地使用每个标记。所以你会有一个正则表达式列表,并会尝试在每个点匹配其中一个。如果您的输入超出了非常简单的范围,那么这是执行此操作的最简单和最干净的方法。
关于c# - 正则表达式能做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232791/