有人可以告诉我如何修改此正则表达式以允许字符串中的句点吗?
string[] parts = Regex.Split(s, @"\b|[^\.#_a-zA-Z0-9()=><!%]");
如果我提供字符串:"HELLO ABC.123"
此正则表达式返回{"HELLO", "ABC", ".", "123"}
我想要返回{"HELLO", "ABC.123"}
请原谅我对正则表达式模式的无效。
编辑:我正在使用C#3.5
答案 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()=><!%]");