如果找到多个匹配,则正则表达式失败
发布时间:2020-12-14 05:56:58 所属栏目:百科 来源:网络整理
导读:采取以下正则表达式: P[0-9]{6}(s|.|,) 这是为了检查一个字符串中以“P”开头的6位数字 – 大部分工作正常. 问题是,如果发现多个匹配,我们需要失败 – 这可能吗? 即,使以下屏幕截图中的文本4失败,但仍然保持所有其他人失败/通过,如下所示: (此RegEx正在
采取以下正则表达式:
P[0-9]{6}(s|.|,) 这是为了检查一个字符串中以“P”开头的6位数字 – 大部分工作正常. 问题是,如果发现多个匹配,我们需要失败 – 这可能吗? 即,使以下屏幕截图中的文本4失败,但仍然保持所有其他人失败/通过,如下所示: (此RegEx正在SQL .net CLR中执行) 解决方法
如果此工具使用的正则表达式引擎确实是.NET引擎,那么您可以使用
^(?:(?!P[0-9]{6}[s.,]).)*P[0-9]{6}[s.,](?:(?!P[0-9]{6}[s.,]).)*$ 如果它是本机SQL引擎,那么您无法使用单个正则表达式匹配,因为这些引擎不支持环绕声断言. 说明: ^ # Start of string (?: # Start of group which matches... (?!P[0-9]{6}[s.,]) # unless it's the start of Pnnnnnn... . # any character )* # any number of times P[0-9]{6}[s.,] # Now match Pnnnnnn exactly once (?:(?!P[0-9]{6}[s.,]).)* # Match anything but Pnnnnnn $ # until the end of the string 测试它live on regex101.com. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |