簡體   English   中英

每種編程語言中的正則表達式是否相同?

[英]Are regular expressions the same in every programming language?

我是一個想要學習正則表達式的python用戶,我在Udemy上有一個很好的課程似乎沒問題。 然而,它既不是python課程也不是python正則表達式課程。

正則表達式在任何編程語言中是否相同?

我的意思是它們是相同的,並使用與python中的re包使用的完全相同的語法?

他們有不同的變化......

這個網站將為您提供一種方法來測試您的表達式的一些常見語言(包括python)...

https://regex101.com/

實現之間存在顯着的差異。

根據(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.

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