[英]Are regular expressions the same in every programming language?
我是一個想要學習正則表達式的python用戶,我在Udemy上有一個很好的課程似乎沒問題。 然而,它既不是python課程也不是python正則表達式課程。
正則表達式在任何編程語言中是否相同?
我的意思是它們是相同的,並使用與python中的re
包使用的完全相同的語法?
實現之間存在顯着的差異。
根據(2.7)正則表達式,Python的re
模塊基於Perl正則表達式。 正則表達式語法幾乎相同。 Perl的用法完全不同; 更緊湊(或更難以理解,取決於您的觀點:-)。
另請注意,Python 2和3之間的正則表達式存在差異,具體取決於使用的是哪些標志。 稍微簡化你可以說開箱即用,Python 2正則表達式處理ASCII字符串,而Python 3處理unicode字符串。
在Python正則表達式中, *
和+
限定符是貪婪的 ,即它們匹配盡可能多的文本。 這使得結果不直觀。 例如,假設您要在尖括號之間搜索文本。 您可能認為<.*>
可能會這樣做。 但觀察:
In [1]: import re
In [2]: re.findall('<.*>', '<a> <b> <c>')
Out[2]: ['<a> <b> <c>']
你要添加一個?
使他們不貪心。
In [3]: re.findall('<.*?>', '<a> <b> <c>')
Out[3]: ['<a>', '<b>', '<c>']
要明確,你必須尋找除了結束角色之外的任何東西。
In [4]: re.findall('<[^>]*>', '<a> <b> <c>')
Out[4]: ['<a>', '<b>', '<c>']
類似UNIX的系統(如Linux和* BSD)通常在許多實用程序中支持POSIX正則表達式。 那些有兩種口味,基本和擴展。 基本POSIX正則表達式不支持分支元字符|
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.