为什么这个正则表达式前缀不起作用?
Why does this regex prefix not work?
我有一个示例数据,我正在寻找其中的匹配项。我在 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}
我的前缀到底做错了什么?我希望所有这些 3 位数字都匹配并符合其前面的字母代码,但它不起作用。
如果你只想要最后的数字,你需要一个 none-capture 组在 look behind :
(?<=(?:[A-Z]{3}\s){2})[0-9]{3}
你有什么理由不能用锚点向后看吗?
(?<=\s)\d{3}$
我有一个示例数据,我正在寻找其中的匹配项。我在 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}
我的前缀到底做错了什么?我希望所有这些 3 位数字都匹配并符合其前面的字母代码,但它不起作用。
如果你只想要最后的数字,你需要一个 none-capture 组在 look behind :
(?<=(?:[A-Z]{3}\s){2})[0-9]{3}
你有什么理由不能用锚点向后看吗?
(?<=\s)\d{3}$