REGEX 使用关键字将字符串拆分为列表

Posted

技术标签:

【中文标题】REGEX 使用关键字将字符串拆分为列表【英文标题】:REGEX Split string into List using keyword 【发布时间】:2020-03-03 16:36:57 【问题描述】:

我有如下字符串,我需要将字符串拆分为列表

string s = "Welcome to the Center

Batch #1 
English
Description about the course

Batch #2
Science
Description about the course

Batch #3
Social 
Description about the course "

我想使用"Batch" 关键字拆分字符串,输出应如下所示。如何使用正则表达式进行拆分?

myList[0]="Batch #1 
English
Description about the course"

myList[1]="Batch #2
Science
Description about the course"

myList[2]="Batch #3 
Social
Description about the course"

【问题讨论】:

你尝试了什么?见Should "Give me a regex that does X" questions be closed? 【参考方案1】:

您可以尝试以下方法:-

List<string> strList = Regex.Split(str, "Batch").Skip(1).ToList();

【讨论】:

拆分后列表中缺少“批处理”一词 是的,在每个项目上附加“Batch”关键字都可以。 List strList = Regex.Split(str, "Batch").Skip(1).Select(x => "Batch" + x).ToList();【参考方案2】:

您不需要正则表达式,只需将字符串拆分为两个连续的换行符(准确地说是\r\n\r\n 序列):

  string s = @"Welcome to the Center

  Batch #1 
  English
  Description about the course

  Batch #2
  Science
  Description about the course

  Batch #3
  Social
  Description about the course ";

  var splitted = s.Split(new string[]  "\r\n\r\n" , StringSplitOptions.RemoveEmptyEntries).ToList();
  splitted.RemoveAt(0);

【讨论】:

【参考方案3】:

试试这个。

你应该使用.*?

Batch.*?course

Batch.*?.\n.*\n.*

FIDDLE DEMO

【讨论】:

以上是关于REGEX 使用关键字将字符串拆分为列表的主要内容,如果未能解决你的问题,请参考以下文章

Java Regex - 拆分逗号分隔列表,但在括号内排除逗号

Java Regex - 拆分逗号分隔列表但排除方括号内的逗号

C# 使用 Regex.Split 拆分大字符串。必须保留分隔符

SQL Regex - 选择“/”之后的所有内容并拆分为数组

如何使用 REGEX 将作者拆分为对象或数组 C#?

Python - 根据 2 个关键字拆分带有长字符串的列表