在保留“分词词”的替代整词列表上的分句

时间:2014-10-14 14:36:33

标签: c# regex

我很难过。

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 ]*)

就像他们说的那样,我遇到了问题所以我选择了正则表达式,现在我有饮酒问题。

2 个答案:

答案 0 :(得分:4)

根据以下使用lookahead assertion的正则表达式分割输入。 Lookaheads是零宽度断言,它不会消耗任何字符,但仅断言是否可以匹配。

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

DEMO

<强>代码:

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

答案 1 :(得分:1)

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

试试这个。在你的regex.split function.Replace by \n中使用。见demo。

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