Python中正则表达式的替代方案

Python中正则表达式的替代方案,python,regex,text,full-text-search,Python,Regex,Text,Full Text Search,正则表达式非常不可读,并且很难调试。文本处理是否存在任何可以被凡人处理的替代品 标准包括 它是一个库或工具(请将答案指向库本身) 可读语法(无需备忘表) 带示例的文档 能够调试表达式 如果可能的话,您可以提及特定于语言和独立于语言的解决方案。我主要是在Python上开发,但我希望看到一个可以移植到其他语言/平台的库 我曾经读到Haskell会有很好的文本处理能力,但这是一个内置的语言解决方案,而不是通用的解决方案 编辑:请不要回答“正则表达式不坏,像这样做!”Stackoverflow.co

正则表达式非常不可读,并且很难调试。文本处理是否存在任何可以被凡人处理的替代品

标准包括

  • 它是一个库或工具(请将答案指向库本身)

  • 可读语法(无需备忘表)

  • 带示例的文档

  • 能够调试表达式

如果可能的话,您可以提及特定于语言和独立于语言的解决方案。我主要是在Python上开发,但我希望看到一个可以移植到其他语言/平台的库

我曾经读到Haskell会有很好的文本处理能力,但这是一个内置的语言解决方案,而不是通用的解决方案


编辑:请不要回答“正则表达式不坏,像这样做!”Stackoverflow.com不是一个发表主观意见的地方,但我认为正则表达式不好,我想看看我使用它们的替代选项。

您可以使用
re.VERBOSE
标志:

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)

提供另一种创建和执行(简单)语法的方法。我一直在一个项目中使用它来解析不同类型的日志文件,它的使用非常简单,而且比regexps更直观。

是一个Lua库,恐怕不是Python库,但它可能是由某人移植的。无论哪种方式,它都是开源的,所以如果你想自己移植的话,你可以移植它。与正则表达式相比,它的文本匹配方法有些不同,因此我发现它具有相当大的学习曲线。然而,就效率而言,它有可能超越正则表达式——但显然,这种说法在很大程度上取决于测试用例和两种语言的能力。

看看Ned Batcheld的列表我知道这篇文章很古老,但人们可能会从这个问题/答案中受益。口头表达仍在幕后使用正则表达式,但使用方式很友好

简介:
Python fork:

如果您关心理解和调试其他人的正则表达式,那么有一些翻译工具可以使它们更容易理解。我最喜欢的是Windows上的RegExBuddy。在Mac上,AppStore中的RegExRx很有帮助。

请参阅为什么如果“人类可读语法”位太长,这可能是个坏主意。至于文档,有大量关于“常用”正则表达式的文档,即使您认为是这样,也不需要重新发明技术来编写“更好”的文档。至于调试,这里有一些工具,带一些例子来说明你的意思。我想找一个替代品,而不是增强我现有的reg exp体验最好的解决方案是什么?正则表达式很少是问题的最佳解决方案,但当它们是时,它们就是。如果没有人为这组问题发明了更好的解决方案,也许真的没有改进的余地?我是人,我可以阅读正则表达式。正则表达式不是不可读的;只有写得不好的正则表达式才是有效的。(提示:r“打断”+r“表达式”并逐行注释它,就像您注释任何其他复杂代码块一样。)对于一些在这里“吹嘘”他们如何喜欢正则表达式的人来说。你所获得的编写和阅读正则表达式的熟练程度或使用正则表达式的乐趣并不意味着数以百万计的开发人员,更不用说新开发人员,应该使用他们晦涩难懂的语法,这不适合算法构造和操作,并且以其对单词构成和不构成的奇怪和封闭的花园方式而臭名昭著。现在真的是时候转向算法、工程设计和可用性设计能够提供的更好的东西了。是的,我也读过正则表达式:)很好的资料来源——我正是在寻找这种信息!在正则表达式的灵活性限制范围内,口头表达式在可读性和可组合性方面看起来很棒!然而,我无法注意到它的api上是否有任何指示空白字符(?)的内容。它只是将“”解释为任何空白字符吗?虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-谢谢你的改进。固定的。有人当然可以在引擎中搜索这些工具。链接不是必需的。