我正在努力使用正则表达式停止在行尾。
输入看起来像这样:
有些行在冒号后面有值(可能包含任何字符),有些则没有。结肠两侧可能有空格,可能没有。
对于第2行和第4行,以下工作(即分别匹配12
和16
):
Pink\s*:\s*(.*)\n
Red\s*:\s*(.*)\n
但对于第3行(没有值匹配),使用上述语法的正则表达式返回16,即超出行尾的读取。
任何人都可以建议我做错了什么吗?我使用的是VBA。
答案 0 :(得分:3)
你遇到的问题是\s
速记字符类匹配垂直和水平空格。也就是说,它匹配空格和换行序列。
因此,您需要将其限制为仅匹配水平空格。
您需要将\s
替换为[ \t]
或[^\S\r\n\v]
。