c# - 正则表达式能做到这一点吗?

标签 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'");

这适用于示例 #1 和示例 #3,但不适用于示例 #2。 我想知道理论上是否有一种方法可以用正则表达式实现我想要的东西

最佳答案

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

关于c# - 正则表达式能做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232791/

相关文章:

c - 如何从 C 中的字符串解析标记?

c# - .NET 运行时是否调用过 Thread.Abort()?

c# - 我需要创建一个字典,其中每个键都可以映射到多个值

Java 正则表达式生成模式

sql - Oracle REGEXP_REPLACE 开头的数字和空格

elasticsearch - 无法从基于查询和文档标记化的 Elasticsearch 中获得正确的结果

keras - 在 keras 标记器中包含标点符号

c# - 如何在javascript中加密url并在c#中解密

c# - 将复杂数组从 Controller 传递到 View ASP.NET MVC

regex - expr 正则表达式中的变量