我在python初学者,当我运行下面的正则表达式,它被卡住我的Mac:错误的正则表达式在Python
re.search("^[A-Z]+([A-Z\w]+|\s)+$","Diploma in Fine Art from Royal School of Art & Design")
请让我知道,如果我做的任何错误。
我在python初学者,当我运行下面的正则表达式,它被卡住我的Mac:错误的正则表达式在Python
re.search("^[A-Z]+([A-Z\w]+|\s)+$","Diploma in Fine Art from Royal School of Art & Design")
请让我知道,如果我做的任何错误。
正则表达式写入的方式很容易导致灾难性的回溯问题,即([A-Z\w]+|\s)+
部分由于嵌套的+
量词而引起该问题。您必须寻找一个
^[A-Z][a-z]*(\s+[A-Z][a-z]*)+$
它匹配
^
- 串[A-Z][a-z]*
- 一个大写的字(\s+[A-Z][a-z]*)+
- 一个或多个大写的用空格分隔的ASCII字$
- 字符串结尾。提示:总是测试你的模式与不匹配的模式(比如你的模式),因为它们是最有问题的。
感谢您的解决方案。我试图写出一个正则表达式,它与每个单词都有大写字母的单词序列相匹配(例如“皇家学校”)。 – user1487744
现在检查它,它应该按预期工作。 –
“卡住”是什么意思?它可以运行吗?你有错误吗?你有意想不到的输出? –
这意味着灾难性的回溯。 –
对不起,如果我不清楚。运行该命令后,我无法得到任何答案。感谢Wiktor提供解决方案。 – user1487744