正则表达式拆分包含句点的单词

时间:2012-06-12 13:09:31

标签: c# regex string-split

有人可以告诉我如何修改此正则表达式以允许字符串中的句点吗?

string[] parts = Regex.Split(s, @"\b|[^\.#_a-zA-Z0-9()=><!%]");

如果我提供字符串:"HELLO ABC.123"

此正则表达式返回{"HELLO", "ABC", ".", "123"}

我想要返回{"HELLO", "ABC.123"}

请原谅我对正则表达式模式的无效。

编辑:我正在使用C#3.5

2 个答案:

答案 0 :(得分:3)

\b期间双方的

ABC.123次匹配。 您可以更改它以避免这种情况。例如:

(?<![\w.])(?=[\w.])|(?<=[\w.])(?![\w.])

给出完整的引用表达式:

@"(?<![\w.])(?=[\w.])|(?<=[\w.])(?![\w.])|[^\w.#()=><!%]+"

您可能希望将#()=><!%个字符添加到所有字符类中。

答案 1 :(得分:1)

只需从\b移除\b|[^\.#_a-zA-Z0-9()=><!%],然后使用:

string[] parts = Regex.Split(s, @"[^#_a-zA-Z0-9()=><!%]");