【发布时间】:2014-05-31 12:16:26
【问题描述】:
I can\'?t (.*)
我的正则表达式是上述形式。但是如果给它的字符串在t 之后结束,我的匹配对象不匹配
re.compile(r'I can\'?t (.*)').match(str)
如果 str = "I cant",它不起作用。但是如果 str = "I can't use",它可以工作(匹配返回一些东西)。
【问题讨论】:
I can\'?t (.*)
我的正则表达式是上述形式。但是如果给它的字符串在t 之后结束,我的匹配对象不匹配
re.compile(r'I can\'?t (.*)').match(str)
如果 str = "I cant",它不起作用。但是如果 str = "I can't use",它可以工作(匹配返回一些东西)。
【问题讨论】:
为此,您可以这样做:
re.compile(r'I can\'?t.*').match(str)
这将匹配 "I can't" 和后面的一些其他文本或仅匹配 "I can't"
【讨论】:
.* 将始终匹配,即使它是一个空字符串。通过将其作为首选,您可以确保永远不会使用 $。
您在t 之后留下了一个必填空格。删除它,你会没事的:
I can\'?t(.*)
另请注意,括号仅在您想使用第一个捕获组的内容时才有用,否则您可以安全地删除它们。
【讨论】: