如何正则表达式选择两点之间的第N次出现

时间:2014-08-05 14:28:46

标签: regex sublimetext3 boost-regex

使用正则表达式,是否有简洁,优雅和简短的方法来选择此列表中第二个分号之前出现的最后一个单词,还包括非英语字符和连字符?我一直把它通过regexr.com,但在它的生命中似乎无法提出任何真正的解决方案。

1;Bjönæå Frælåøn Boøf;Kjrvad 19;
2;Vrönæå Kræ-êlèn;Ojrvøad 3;

选择:

Boøf
Kræ-êlèn

1 个答案:

答案 0 :(得分:1)

此正则表达式匹配第二个分号前面的单词:

[\p{L}-]+(?=;[^;]*;$)

请参阅使用您的示例输入的live demo

最后一个术语是预测资产匹配之后是分号,一些非分号,然后是终止分号。

字符类是任何“字母”字符(包括所有语言中的字符)和连字符(当它在字符类中最后出现时不需要转义)的POSIX表达式。

使用前瞻可以匹配第二个 last 分号,但是看后面可能不是可变长度,因此匹配第二个分号要困难得多,需要组。