Regex 为什么这个正则表达式前缀不起作用?
我有一个样本数据,我正在寻找其中的匹配项。我正在用记事本++进行测试Regex 为什么这个正则表达式前缀不起作用?,regex,notepad++,Regex,Notepad++,我有一个样本数据,我正在寻找其中的匹配项。我正在用记事本++进行测试 QA 44 ABQ DAL 280 ABQ HOU 290 HOU PHX 210 DAL PHX 102 当我使用下面的正则表达式时,我在最后四行中得到了预期的匹配 ([A-Z]{3}\s){2}[0-9]{3} 但是,当我试着在最后输入3位数字,并将其他所有内容移到前缀时,就没有匹配项了 (?<=([A-Z]{3}\s){2})[0-9]{3} (?如果您只需要最后一位数字,则需要在“后视”中设置一个无捕获组:
QA 44
ABQ DAL 280
ABQ HOU 290
HOU PHX 210
DAL PHX 102
当我使用下面的正则表达式时,我在最后四行中得到了预期的匹配
([A-Z]{3}\s){2}[0-9]{3}
但是,当我试着在最后输入3位数字,并将其他所有内容移到前缀时,就没有匹配项了
(?<=([A-Z]{3}\s){2})[0-9]{3}
(?如果您只需要最后一位数字,则需要在“后视”中设置一个无捕获组:
(?<=(?:[A-Z]{3}\s){2})[0-9]{3}
(?有什么原因不能使用带锚点的后视功能
(?<=\s)\d{3}$
(?您的用例是什么?您不能使用捕获组的任何原因(即第一个正则表达式)?记事本++使用基于perl
的正则表达式,它只支持lookbehinds中的文字/固定长度字符串。我不知道记事本++的情况。也许它不是用于前缀/后缀内容的最佳正则表达式测试工具。但Java完全支持这些正则表达式,因为这正是我的目标…我不确定,我不知道“如果java不支持它,我会很惊讶-看看你可以尝试不同的引擎。我确实想到了无捕获组。我不知道为什么我没有尝试。谢谢!但它是一个固定长度的正则表达式!我必须测试以确保,但我想boost会像OP预期的那样接受它。@Jongware是的,它确实是一个固定长度!我不知道它在哪里。”错误的确切来源是:)谢谢你注意到这一点!这是非常有效的简化SSCCE我放在一起,但对于我真正的业务问题,我需要使用前缀。