我是学习正则表达式的新手,我遇到了一个我解决的问题,虽然我不确定为什么这是一个问题而且只想学习更多!
我正在使用Python作为我的正则表达式语句。要捕获的文本的相关部分是(我已经更改了确切的数字,但这就是它的样子)
Evaluation Type: InterimContract Percent Complete: 30%Period of Performance Being Assessed: 05/27/2013 -
我希望捕获Interim
和05/27/2013
。我使用的正则表达式不起作用
match = re.search(
"Evaluation Type:[\s\n]*(.*?)[\s\n]*Contract Percent[.]*"
"Period of Performance Being Assessed:[\s\n]*(.*?)[\s\n]*-"
, page_content)
有效的代码是
match = re.search(
"Evaluation Type:[\s\n]*(.*?)[\s\n]*Contract Percent.*"
"Period of Performance Being Assessed:[\s\n]*(.*?)[\s\n]*-"
, page_content)
(您可能会注意到,区别在于我删除了第2行末尾.
周围的方括号。
我知道括号实际上并不需要(只是帮我把它想象成我正在创建正则表达式)但我不确定为什么它们会破坏它。我与第一组代码不匹配,而与第二组代码完全匹配。我确定它是一个简单的小东西,但我无法找到可能会破坏我在线搜索的内容(尽管我可能不会深入了解我的知识我正在寻找什么
答案 0 :(得分:4)
[.]*
表示0或更多点.*
表示0或更多任何字符,但换行符。字符类中的一个点失去了它的特殊含义。