正则表达式非常难以理解且难以调试。是否存在可以由凡人处理的文本处理的替代品?
标准包括
这是一个图书馆或工具(请指出图书馆本身的答案)
人类可读的语法(不需要备忘单)
带示例的文档
能够调试表达式
如果可能,您可以提及特定于语言和语言的解决方案。我主要是在Python上开发,但我希望看到一个可以移植到其他语言/平台的库。
我曾经读过Haskell会有很好的文本处理功能,但同样,这是一个内置的语言解决方案,而不是通用的解决方案。
编辑:请不要给出答案“正则表达式也不错,请这样做!” Stackoverflow.com不是一个主观意见的地方,但我认为正则表达式很糟糕,我想看看我使用它们的替代选项。
答案 0 :(得分:8)
我知道这篇文章很老,但人们可能会从这个问题/答案中受益。 VerbalExpressions仍在幕后使用正则表达式,但是以友好的方式。
简介:http://thechangelog.com/stop-writing-regular-expressions-express-them-with-verbal-expressions/ Python fork:https://github.com/VerbalExpressions
答案 1 :(得分:6)
pyparsing提供了另一种创建和执行(简单)语法的方法。我一直在一个项目中使用它来解析不同类型的日志文件,并且使用起来比使用正则表达式更简单,更直观。
答案 2 :(得分:5)
你可以使用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)
答案 3 :(得分:4)
看看Ned Batchelder的python parsing tools
列表答案 4 :(得分:1)
LPeg是一个Lua库而不是Python,我担心,但它可能已被某人移植过。无论哪种方式,它都是开源的,所以如果你想要自己可以移植它。文本匹配的方法与正则表达式有所不同,因此我发现它具有相当大的学习曲线。但是,在效率方面,它有可能胜过正则表达式 - 但显然,这样的陈述在很大程度上取决于两种语言中的测试用例和能力。
答案 5 :(得分:1)
如果您担心了解和调试其他人的正则表达式,可以使用一些翻译工具来使其更容易理解。我最喜欢的是Windows上的RegExBuddy。在Mac上,AppStore中的RegExRx很有帮助。