Regex 如何用正则表达式匹配恰好出现n次的行?
我正在尝试匹配正好包含两个分号的行(使用Pythons-re-library): 然而,我不知道如何不包括每一行超过2个分号。 到目前为止,我得出了以下结论:Regex 如何用正则表达式匹配恰好出现n次的行?,regex,line,re,exact-match,Regex,Line,Re,Exact Match,我正在尝试匹配正好包含两个分号的行(使用Pythons-re-library): 然而,我不知道如何不包括每一行超过2个分号。 到目前为止,我得出了以下结论: (?=.*[;]){2}$ 以下是我对代码的理解: (?=.*[;])此部分向前看,只要后面跟一个分号,就可以匹配任何和所有字符。对于{2},该部分将精确匹配2次。在第二个分号之后,行结束($) 有什么指示吗?所以我们想要: 起跑线 0个或多个非分号 分号 0个或多个非分号 分号 0个或多个非分号 下线 转换为正则表达式,我们得到:
(?=.*[;]){2}$
以下是我对代码的理解:
(?=.*[;])此部分向前看,只要后面跟一个分号,就可以匹配任何和所有字符。对于{2},该部分将精确匹配2次。在第二个分号之后,行结束($)
有什么指示吗?所以我们想要:
- 起跑线
- 0个或多个非分号
- 分号
- 0个或多个非分号
- 分号
- 0个或多个非分号
- 下线
^[^;]*;[^;]*;[^;]*$
对于N次重复的一般情况,可以使用
^([^;]*;){N}[^;]*$
您需要构建一个定位在线条起点和终点的图案。请注意,您不能重复前瞻(这没有意义,因为它是零宽度断言)。您还可以简单地计算
的数量代码>事件。谢谢,这确实有效。我把它浓缩成:^[^;]*;[^;]*;$代码>使用通用案例编辑
^([^;]*;){N}[^;]*$