2016-03-03 41 views
-1

我在python初学者,当我运行下面的正则表达式,它被卡住我的Mac:错误的正则表达式在Python

re.search("^[A-Z]+([A-Z\w]+|\s)+$","Diploma in Fine Art from Royal School of Art & Design") 

请让我知道,如果我做的任何错误。

+2

“卡住”是什么意思?它可以运行吗?你有错误吗?你有意想不到的输出? –

+0

这意味着灾难性的回溯。 –

+0

对不起,如果我不清楚。运行该命令后,我无法得到任何答案。感谢Wiktor提供解决方案。 – user1487744

回答

2

正则表达式写入的方式很容易导致灾难性的回溯问题,即([A-Z\w]+|\s)+部分由于嵌套的+量词而引起该问题。您必须寻找一个

^[A-Z][a-z]*(\s+[A-Z][a-z]*)+$ 

regex demo

它匹配

  • ^ - 串
  • 开始
  • [A-Z][a-z]* - 一个大写的字
  • (\s+[A-Z][a-z]*)+ - 一个或多个大写的用空格分隔的ASCII字
  • $ - 字符串结尾。

提示:总是测试你的模式与不匹配的模式(比如你的模式),因为它们是最有问题的。

+0

感谢您的解决方案。我试图写出一个正则表达式,它与每个单词都有大写字母的单词序列相匹配(例如“皇家学校”)。 – user1487744

+0

现在检查它,它应该按预期工作。 –