Python 正确的正则表达式,以精确匹配模式的n个实例

Python 正确的正则表达式,以精确匹配模式的n个实例,python,regex,Python,Regex,假设我有以下几点: 1.) /some/text/here/with-dashes/010101/ 2.) /some/text/here/too/ 3.) /some/other/really-long/text/goes/here/019293847/ 我想得到正好包含6/的字符串。到目前为止,这些正则表达式没有按照我的预期工作: (/\w+[-]?\w+){6} (/\w+[-]?\w+){6,6} (/\w+[-]?\w+){,6}? 这些正则表达式还匹配大于6的字符串/I希望它与正

假设我有以下几点:

1.) /some/text/here/with-dashes/010101/
2.) /some/text/here/too/
3.) /some/other/really-long/text/goes/here/019293847/
我想得到正好包含6/的字符串。到目前为止,这些正则表达式没有按照我的预期工作:

(/\w+[-]?\w+){6}
(/\w+[-]?\w+){6,6}
(/\w+[-]?\w+){,6}?

这些正则表达式还匹配大于6的字符串/I希望它与正好6/

的字符串匹配正好6个匹配的正确语法是{6},如第一个示例所示

您使用的正则表达式与目标字符串的六个以上匹配的原因是它们没有锚定到字符串的开头和结尾。如果一个字符串出现了10次路径组件,那么它与前6次匹配,因此计数

要解决此问题,请使用例如:

^(/\w+[-]?\w+){6}$
或允许可选的结束斜杠:

^(/\w+[-]?\w+){6}/?$

与第一个示例中相同,正确的语法正好是{6}

您使用的正则表达式与目标字符串的六个以上匹配的原因是它们没有锚定到字符串的开头和结尾。如果一个字符串出现了10次路径组件,那么它与前6次匹配,因此计数

要解决此问题,请使用例如:

^(/\w+[-]?\w+){6}$
或允许可选的结束斜杠:

^(/\w+[-]?\w+){6}/?$
考虑使用第三方库

代码

测验

考虑使用第三方库

代码

测验


你真的需要正则表达式吗?您可以只使用parts=path.split/..@Kroltan,我正在使用正则表达式和beautifulsoup来过滤url。比如soup.finda,href=regex你真的需要regex吗?您可以只使用parts=path.split/..@Kroltan,我正在使用正则表达式和beautifulsoup来过滤url。类似于soup.finda,href=regexso,在正则表达式中添加“^”和“$”,基本上意味着整个字符串必须包含6个事件?实际上,这意味着这六个事件必须发生在整个字符串上,但效果相同。因此,在正则表达式中添加“^”和“$”,它基本上意味着整个字符串必须正好包含6次出现?它实际上意味着这6次出现必须发生在整个字符串上,但效果是相同的。