PCRE2正则匹配优先级调整:统一用捕获组1存储结果
统一捕获组的PCRE2正则解决方案
要让hi、hey、hello这三个匹配结果都存入捕获组1,只需调整正则的分组结构:
将原来的多分支独立捕获,改为把所有目标匹配项放在同一个捕获组内,修改后的正则为:
/.*?(hello|hey|hi)/ms
原理说明
原正则/.*?(hello)|.*?(hey)|.*?(hi)/ms的问题在于,每个分支都单独定义了一个捕获组(组1对应hello、组2对应hey、组3对应hi)。调整后,我们把三个目标字符串作为备选放入同一个捕获组(hello|hey|hi),无论匹配到哪一个,都会统一存入捕获组1。
如果需要一次性匹配文本中所有符合条件的内容,记得添加g(全局匹配)修饰符,最终正则为:
/.*?(hello|hey|hi)/msg
内容的提问来源于stack exchange,提问作者Mario Palumbo
相关产品推荐
相关产品推荐

