Regex Don';如果组前的一个和/或两个字符包含特定文本,则不匹配
仅当组前面没有一个或两个特定字符时,我才希望匹配该组 当前面只有一个字符时,我可以让它工作。 但是如果我需要检查前面的两个字符,我就卡住了 例如: 我希望与“2009-2010”匹配,只要“2009-2010”前面不加“)”或“)(这是版权标志+空格) 示例文本:这是您提供2009-2010年的电话号码 预期结果:2009-2010年比赛 示例文本:版权所有©2009-2010 预期结果:不匹配 我的正则表达式适用于前面的一个字符,例如:§@)-Regex Don';如果组前的一个和/或两个字符包含特定文本,则不匹配,regex,Regex,仅当组前面没有一个或两个特定字符时,我才希望匹配该组 当前面只有一个字符时,我可以让它工作。 但是如果我需要检查前面的两个字符,我就卡住了 例如: 我希望与“2009-2010”匹配,只要“2009-2010”前面不加“)”或“)(这是版权标志+空格) 示例文本:这是您提供2009-2010年的电话号码 预期结果:2009-2010年比赛 示例文本:版权所有©2009-2010 预期结果:不匹配 我的正则表达式适用于前面的一个字符,例如:§@)- 代码:(?您可以使用两个反向lookbehind
代码:
(?您可以使用两个反向lookbehind,一个用于检查每种情况:
(?<![§@.©-])(?<![§@.©-] )\b(\d{4})-(\d{4})\b
(?
您可以使用以下带有负回溯的示例来表示一组以节号开头的字符,并且可以选择使用空格(第二个问号表示前面的字符可以存在,也可以不存在)
(?
如果您的要求是以任何顺序或长度匹配字符集的不同组合,请在结束方括号后使用星号表示它可以出现任意次数
(?<![§@.©-]*)\b(\d{4})-(\d{4})\b
(?使用与一个版权字符或版权字符后跟空格匹配的负查找
模式:(
解释
(?打开一个反向查找
[§@.©-]
匹配[§@.©-]
符号组
|
或
[§@.©-]\s
匹配一组[§@.©-]
符号,后跟一个\s
空格
)
关闭反向查找
\b
匹配单词边界
d{4}-\d{4}
匹配4位数字,后跟破折号和另外4位数字
\b
结束单词边界
问题(?@user11662292不,它不会,它只会在2009-2010
前面有一个特殊字符和空格时阻止匹配。请参阅演示…谢谢!!这正是我需要它做的-你知道我使用visual studio find选项来验证这些,它没有施加这样的限制。不确定其他正则表达式引擎。只有少数正则表达式引擎es支持可变长度查找。
(?<![§@.©-]*)\b(\d{4})-(\d{4})\b