首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和Rubular在正则表达式上的区别?

Python和Rubular在正则表达式上的区别?
EN

Stack Overflow用户
提问于 2010-05-09 22:24:31
回答 1查看 847关注 0票数 1

在Rubular中,我创建了一个正则表达式:

代码语言:javascript
复制
(Prerequisite|Recommended): (\w|-| )*

它与粗体相匹配:

推荐:电脑和一些艺术的良好舒适感。

夏天。2学分。必备条件:大一新生起立或获得讲师许可.学分不适用于工程学位. S-U级仅适用.

下面是Python中regex的用法:

代码语言:javascript
复制
note_re = re.compile(r'(Prerequisite|Recommended): (\w|-| )*', re.IGNORECASE)

def prereqs_of_note(note):
    match = note_re.match(note)
    if not match:
        return None
    return match.group(0) 

不幸的是,代码返回的是None而不是匹配:

代码语言:javascript
复制
>>> import prereqs

>>> result  = prereqs.prereqs_of_note("Summer. 2 credits. Prerequisite: pre-fres
hman standing or permission of instructor. Credit may not be applied toward engi
neering degree. S-U grades only.")

>>> print result
None

我在这里做错什么了?

更新:,我需要re.search()而不是re.match()吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-09 23:18:11

您希望使用re.search(),因为它扫描字符串。您不需要re.match(),因为它试图在字符串的开头应用模式。

代码语言:javascript
复制
>>> import re
>>> s = """Summer. 2 credits. Prerequisite: pre-freshman standing or permission of instructor. Credit may not be applied toward engineering degree. S-U grades only."""
>>> note_re = re.compile(r'(Prerequisite|Recommended): ([\w -]*)', re.IGNORECASE)
>>> note_re.search(s).groups()
('Prerequisite', 'pre-freshman standing or permission of instructor')

另外,如果你想在单词“指导员”后面的第一节课上进行匹配,你必须添加一个文字‘’。进入你的模式:

代码语言:javascript
复制
>>> re.search(r'(Prerequisite|Recommended): ([\w -\.]*)', s, re.IGNORECASE).groups()
('Prerequisite', 'pre-freshman standing or permission of instructor. Credit may not be applied toward engineering degree. S-U grades only.')

我建议你让你的模式更贪婪,并在其余的线路上匹配,除非这不是你真正想要的,尽管你似乎这样做了。

代码语言:javascript
复制
>>> re.search(r'(Prerequisite|Recommended): (.*)', s, re.IGNORECASE).groups()
('Prerequisite', 'pre-freshman standing or permission of instructor. Credit may not be applied toward engineering degree. S-U grades only.')

前面的模式加上文字'.',在这个示例中返回与.*相同的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2799418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档