在可替换的完整单词列表上拆分句子,保留“;拆分词”;

本文关键字:拆分 句子 保留 分词 可替换 列表 单词 | 更新日期: 2023-09-27 18:26:37

我被难住了。

I went to the store at the mall at seven thirty in a big huff.

期望Regex.Split生成

  • 我去了
  • 去商店
  • 在商场
  • 七点半
  • 怒气冲冲

对不起,我的第一次尝试是:'bto'b|'bat'b|'bin'b,它捕获了介词。

下一次尝试消耗了整句话:

'bto'b([a-zA-Z ]*)|'bat'b([a-zA-Z ]*)|'bin'b([a-zA-Z ]*)

就像他们说的,我有问题,所以我选择了regex,现在我有酗酒的问题。

在可替换的完整单词列表上拆分句子,保留“;拆分词”;

只需根据下面使用前瞻断言的regex来分割输入。Lookahead是零宽度断言,不使用任何字符,只断言匹配是否可能。

@"'s(?=to'b|at'b|in'b)"

演示

代码:

string value = "I went to the store at the mall at seven thirty in a big huff.";
string[] lines = Regex.Split(value, @"'s(?=to'b|at'b|in'b)");
foreach (string line in lines) {
Console.WriteLine(line);
}

IDEONE

(?='bto'b)|(?='bat'b)|(?='bin'b)

试试这个。在regex.split函数中使用此项。替换为'n。请参阅演示。

http://regex101.com/r/uH3tP3/11