如何用正则表达式匹配恰好出现 n 次的行?
How to match a line with exactly n occurrences with regex?
我正在尝试匹配恰好包含两个分号的行(使用 Pythons re 库):
text;text;text;
text;text;
text;text;text;text;
text;text;
但是,我不知道如何不包括每行超过 2 个分号。
到目前为止,我想到了这个:
(?=.*[;]){2}$
我是这样理解代码的:
(?=.*[;]) 这部分向前看并匹配任何和所有字符,只要后面跟一个分号。使用 {2} 这部分正好匹配 2 次。在第二个分号之后,该行结束 ($).
有什么指点吗?
所以我们想要:
- 行开始
- 0 个或更多非分号
- 分号
- 0 个或更多非分号
- 分号
- 停产
转换为正则表达式我们得到:
^[^;]*;[^;]*;$
对于重复 N 次的一般情况,您可以使用
^([^;]*;){N}$
我正在尝试匹配恰好包含两个分号的行(使用 Pythons re 库):
text;text;text;
text;text;
text;text;text;text;
text;text;
但是,我不知道如何不包括每行超过 2 个分号。 到目前为止,我想到了这个:
(?=.*[;]){2}$
我是这样理解代码的:
(?=.*[;]) 这部分向前看并匹配任何和所有字符,只要后面跟一个分号。使用 {2} 这部分正好匹配 2 次。在第二个分号之后,该行结束 ($).
有什么指点吗?
所以我们想要:
- 行开始
- 0 个或更多非分号
- 分号
- 0 个或更多非分号
- 分号
- 停产
转换为正则表达式我们得到:
^[^;]*;[^;]*;$
对于重复 N 次的一般情况,您可以使用
^([^;]*;){N}$