4

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

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

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

这个正则表达式正在返回{"HELLO", "ABC", ".", "123"}

我想回来{"HELLO", "ABC.123"}

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

编辑:我正在使用 C# 3.5

4

2 回答 2

3

\b在 .期间的两边匹配ABC.123。你可以改变它来避免这种情况。例如:

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

给出完整的引用表达式:

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

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

于 2012-06-12T13:37:17.450 回答
1

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

string[] parts = Regex.Split(s, @"[^#_a-zA-Z0-9()=><!%]");
于 2012-06-12T13:13:57.090 回答