如何避免正则表达式^(a)?$匹配空行?
解决正则匹配多行时捕获空行的问题
你用正则表达式 ^(a)?$ 匹配多行字符串(内容是一行a加一行空行)时,会同时匹配到a和空行,原因是(a)?表示a是可选匹配项——空行从行首到行尾没有任何字符,刚好符合这个可选规则,所以被误匹配。
要只匹配包含a的行、排除空行,有两种简单修改方式:
- 直接去掉可选标记,用
^a$:这个表达式要求行首到行尾必须是a,空行完全不满足,只会匹配到目标行。 - 若需要保留分组结构,用
^(a)$:强制分组必须捕获到a,同样会排除空行。
修改后再匹配你的目标字符串,结果只会得到:
Match 1 a Group 1 a
内容的提问来源于stack exchange,提问作者Jason Rich Darmawan
相关产品推荐
相关产品推荐

