【发布时间】:2018-02-02 18:05:30
【问题描述】:
所以我有一个我正在处理的挑战——在一个字符串中找到最长的字母字符串。例如,“abcghiijkyxz”应该导致“ghiijk”(是的 i 加倍)。
我一直在用循环来解决这个问题 - 遍历整个字符串,然后为每个字符,使用 lower 和 ord 开始第二个循环。编写该循环不需要帮助。
但是,有人向我建议 Regex 非常适合这类事情。我的正则表达式很弱(我知道如何获取静态集,我的前瞻性知识扩展到知道它们存在)。我将如何编写一个正则表达式来向前看,并检查未来的字符是否按字母顺序排列?还是建议使用正则表达式对这类事情不实用?
编辑:普遍的共识似乎是 Regex 对于这类事情确实很糟糕。
【问题讨论】:
-
Regex 对于这种事情是不实用的。
-
Regex 是一个 terrible 的选择。正则表达式没有“这个字母在字母表中这个字母之后”的概念;尝试用正则表达式解决这个问题就像尝试用正则表达式做数学一样。
-
你可以看看codegolf.stackexchange.com 的某个人是否疯狂到想出一个正则表达式的解决方案
-
嗯,这似乎很好地验证了我最初的“等等,真的!?”反应。对于这类问题,如果答案是“不,这是一个糟糕的主意”,那么表明问题已结束/已解决的最佳方式是什么?
-
很好的问题。我想您可以回答它(..!!)并将您当前的代码添加为“正确的方式”。或者完全删除问题(考虑到它可能对其他人有帮助)。
标签: python regex python-3.x