如何构造可匹配指定模式或该模式追加特定正则的正则表达式
如何构造可匹配指定模式或该模式追加特定正则的正则表达式
嘿,这事儿其实挺容易搞定的!你想要的是匹配两种情况——要么是你指定的模式ptrn本身,要么是ptrn后面跟着你那个「空格+至少一个可见字符」的后缀。咱们可以用正则里的可选分组来实现这个需求。
直接给你最终的正则表达式:
^ptrn(?:[[:space:]][[:graph:]]+)?$
给你拆解下各个部分的作用:
^和$是字符串锚点,确保咱们匹配的是整个字符串,不会出现只匹配部分内容的情况ptrn就是你原本要匹配的目标模式,要是这个模式里包含正则特殊字符(比如.、*这类),记得要提前转义哦(?:...)是非捕获分组,用来把你的后缀规则打包成一个整体,不会额外生成不必要的捕获组[[:space:]][[:graph:]]+就是你提供的后缀规则:一个空格,加上至少一个可见字符?放在分组后面,表示这个分组可以出现0次(也就是只匹配ptrn)或者1次(匹配ptrn加上后缀)
要是你还需要调整匹配的范围,比如允许后缀出现多次之类的,只需要把?换成*(允许0次或多次)或者+(允许1次或多次)就行啦!
备注:内容来源于stack exchange,提问作者Fatipati
相关产品推荐
相关产品推荐

