[英]Alternatives for regex in Python
正則表達式非常不可讀且難以調試。 是否存在任何可以由普通人處理的文本處理的替代品?
標准包括
它是一個庫或一個工具(請指出庫本身的答案)
人類可讀的語法(不需要備忘單)
帶有示例的文檔
能夠調試表達式
如果可能的話,您能否提及特定語言和獨立於語言的解決方案。 我主要在 Python 上開發,但我希望看到一個可以移植到其他語言/平台的庫。
我曾經讀到 Haskell 會有很好的文本處理能力,但同樣,這是一個內置的語言解決方案,而不是通用解決方案。
編輯:請不要給出“正則表達式還不錯,這樣做”的答案。 Stackoverflow,com 不是發表主觀意見的地方。 但我認為正則表達式不好,我想看看我使用它們的替代選項。
我知道這篇文章很舊,但人們可能會從這個問題/答案中受益。 VerbalExpressions 仍在幕后使用正則表達式,但以一種友好的方式。
介紹: http: //thechangelog.com/stop-writing-regular-expressions-express-them-with-verbal-expressions/
pyparsing提供了另一種創建和執行(簡單)語法的方法。 我一直在一個項目中使用它來解析不同類型的日志文件,並且使用起來比使用正則表達式更簡單且更直觀。
你可以使用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)
看看 Ned Batchelder 的python 解析工具列表
如果您擔心理解和調試其他人的正則表達式,可以使用翻譯工具使它們更易於理解。 我最喜歡的是 Windows 上的 RegExBuddy。 在 Mac 上,AppStore 中的 RegExRx 很有幫助。
LPeg是一個 Lua 庫,而不是 Python 庫,恐怕,但它可能已被某人移植。 無論哪種方式,它都是開源的,因此您可以根據需要自行移植。 它的文本匹配方法與正則表達式有些不同,因此我發現它有相當長的學習曲線。 然而,在效率方面,它有可能勝過正則表達式——但顯然,這樣的語句在很大程度上取決於測試用例和兩種語言的能力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.