名为group的Python正则表达式以

时间:2013-09-26 10:03:46

标签: python regex

我有这个正则表达式

r'^(?P<my_group>[-\w]+)'

匹配

foo-barbar-foo

但我希望它只匹配以'fo'开头的字符串如何为命名组执行此操作?

我试过

r'^(?P<my_group>[[^fo]-\w]+)'

2 个答案:

答案 0 :(得分:4)

你不要把它放在方括号(字符类)中,但在它们之外:

r'^(?P<my_group>fo[-\w]+)'

您当前的正则表达式匹配[[^fo]中的一个字符(即[^fo),后跟短划线,“单词字符”和一个或多个]

您可以在this website上测试您的正则表达式。

答案 1 :(得分:2)

您应该使用fo[\w-]+代替[[^fo]-\w]+。 你的角色课搞得一团糟。在方括号内,你必须放置你想要匹配的字符(也作为间隔,如[a-z])。如果你想匹配-,最好把它放在字符类的末尾,以避免与间隔混淆(所以你应该写[a-d-]之类的东西来匹配{{1} },abcd)。 如果在字符类中您在开头添加-,则需要匹配未列出的所有字符,因此^将匹配除[^a-d-]之外的所有字符,abcd。 请注意,在字符类之外,-表示字符串的开头。