方括号打破正则表达式?

时间:2017-08-08 14:32:50

标签: python regex

我是学习正则表达式的新手,我遇到了一个我解决的问题,虽然我不确定为什么这是一个问题而且只想学习更多!

我正在使用Python作为我的正则表达式语句。要捕获的文本的相关部分是(我已经更改了确切的数字,但这就是它的样子)

Evaluation Type: InterimContract Percent Complete: 30%Period of Performance Being Assessed: 05/27/2013 -

我希望捕获Interim05/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行末尾.周围的方括号。

我知道括号实际上并不需要(只是帮我把它想象成我正在创建正则表达式)但我不确定为什么它们会破坏它。我与第一组代码不匹配,而与第二组代码完全匹配。我确定它是一个简单的小东西,但我无法找到可能会破坏我在线搜索的内容(尽管我可能不会深入了解我的知识我正在寻找什么

1 个答案:

答案 0 :(得分:4)

  • [.]*表示0或更多点
  • .*表示0或更多任何字符,但换行符。

字符类中的一个点失去了它的特殊含义。