Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为什么这个正则表达式前缀不起作用?_Regex_Notepad++ - Fatal编程技术网

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我放在一起,但对于我真正的业务问题,我需要使用前缀。