Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Python 正则表达式匹配下一个_Python_Regex - Fatal编程技术网

Python 正则表达式匹配下一个

Python 正则表达式匹配下一个,python,regex,Python,Regex,我在编写正则表达式以匹配名称时遇到了问题,如果名称后面有一个包含数字的页面,那么它应该同时匹配这两个名称 第一个示例与页面不匹配,因为正则表达式发现|是惰性的 name|(?:,page(\d+))/ name/ name,page1/ 第二个示例将匹配名称和页码,但不会仅匹配名称: (?:name)(?:,page(\d+))/ 到目前为止,我没有任何更多的想法,或者我没有注意到特殊角色的正确表达 有人能给我一些提示来解决这个问题吗:) 编辑: 我确实想出了这个解决方案: name(,p

我在编写正则表达式以匹配名称时遇到了问题,如果名称后面有一个包含数字的页面,那么它应该同时匹配这两个名称

第一个示例与页面不匹配,因为正则表达式发现|是惰性的

name|(?:,page(\d+))/

name/
name,page1/
第二个示例将匹配名称和页码,但不会仅匹配名称:

(?:name)(?:,page(\d+))/
到目前为止,我没有任何更多的想法,或者我没有注意到特殊角色的正确表达

有人能给我一些提示来解决这个问题吗:)

编辑: 我确实想出了这个解决方案:

name(,page(\d+))|name/

使用可选运算符

name(?:,page\d+)?\/
(?:,page\d+)
是非捕获组,
表示它可以出现1次或0次


请参阅。

简单的
名称(,第(\d+)页)不应该按预期工作吗?@Efrin:
?:
用于不捕获组,选择器后的
用于将其设置为“可选”。看起来你把两者混淆了。注意,
是OR运算符,所以在你的第一个正则表达式中,它将匹配
名称
(?:,page(\d+)/
@rednaw我注意到,|不会像我所希望的那样工作,因为我提到过“|不会匹配页面,因为正则表达式发现|这是懒惰的”,“懒惰”一词的主要意思是当一个
*
+
附加了一个
,(如
*?
+?
使
*
+
尽快停止,这被称为“懒惰”.The
|
操作员与懒惰没有任何关系。这是有效的。我不知道你是否对django有任何经验,但是否可以将“name”视为*arg或**kwarg?@Efrin抱歉,我不知道你的意思,我对django没有经验。