Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 如何用正则表达式匹配恰好出现n次的行?_Regex_Line_Re_Exact Match - Fatal编程技术网

Regex 如何用正则表达式匹配恰好出现n次的行?

Regex 如何用正则表达式匹配恰好出现n次的行?,regex,line,re,exact-match,Regex,Line,Re,Exact Match,我正在尝试匹配正好包含两个分号的行(使用Pythons-re-library): 然而,我不知道如何不包括每一行超过2个分号。 到目前为止,我得出了以下结论: (?=.*[;]){2}$ 以下是我对代码的理解: (?=.*[;])此部分向前看,只要后面跟一个分号,就可以匹配任何和所有字符。对于{2},该部分将精确匹配2次。在第二个分号之后,行结束($) 有什么指示吗?所以我们想要: 起跑线 0个或多个非分号 分号 0个或多个非分号 分号 0个或多个非分号 下线 转换为正则表达式,我们得到:

我正在尝试匹配正好包含两个分号的行(使用Pythons-re-library):

然而,我不知道如何不包括每一行超过2个分号。 到目前为止,我得出了以下结论:

(?=.*[;]){2}$
以下是我对代码的理解:

(?=.*[;])此部分向前看,只要后面跟一个分号,就可以匹配任何和所有字符。对于{2},该部分将精确匹配2次。在第二个分号之后,行结束($)

有什么指示吗?

所以我们想要:

  • 起跑线
  • 0个或多个非分号
  • 分号
  • 0个或多个非分号
  • 分号
  • 0个或多个非分号
  • 下线
转换为正则表达式,我们得到:

^[^;]*;[^;]*;[^;]*$
对于N次重复的一般情况,可以使用

^([^;]*;){N}[^;]*$

您需要构建一个定位在线条起点和终点的图案。请注意,您不能重复前瞻(这没有意义,因为它是零宽度断言)。您还可以简单地计算
的数量事件。谢谢,这确实有效。我把它浓缩成:
^[^;]*;[^;]*;$使用通用案例编辑
^([^;]*;){N}[^;]*$