正则表达式可以实现吗?

for*_*yez 3 c# regex tokenize

我试图通过以下方式将字符串拆分为标记(通过正则表达式):

示例#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'");
Run Code Online (Sandbox Code Playgroud)

这将适用于例如#1和示例#3,但它不适用于示例#2.我想知道理论上是否有办法用正则表达式实现我想要的东西

Ste*_*oss 5

你可以构建一个简单的词法分析器,它将涉及逐个使用每个标记.因此,您将拥有正则表达式列表,并尝试在每个点匹配其中一个.如果您的输入超出了非常简单的范围,那么这是最简单,最干净的方法.