簡體   English   中英

Python 中正則表達式的替代品

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM