2014-02-11 183 views
2

我想將一些Perl代碼轉換爲python。我碰到這條線Perl正則表達式 U

if($Var=~ /^\U/) 
{ dosomething(); } 

我期待通過網絡表達,但我不能夠理解它的含義。

帶有\ U大寫至。\ E

。\ E結束的情況下修飾

請給出正確的用法如果可能的話,如何接近的蟒蛇等同的一個例子。

+7

我不知道你瞭解Perl的'\ U'逃跑的意思。它本身不匹配_anything_,它只是修改後面的模式以僅匹配大寫字母。 '/^\ U /'將匹配_every_輸入。 – lanzz

+0

你能舉個\ U的例子嗎? – pikapika

+2

@pikapika,'print「\ Ufoo \ Ebar」;' – Qtax

回答

6

正則表達式引擎對\U一無所知。它由Perl解析器用雙引號和正則表達式文字處理。

"\Uabcdef"  is the same as  uc("abcdef") 
"\Uabc\Edef"  is the same as  uc("abc")."def" 

這意味着,

/^\Uabc/   is the same as  /^ABC/ 
/^\U/   is the same as  /^/ 

/^/(因此/^\U/)是毫無意義的,因爲它總是會匹配。

如果你想確保一個字符串全部由大寫字母,你會使用/^\p{Lu}*\z/,或/^[A-Z]*\z/如果你有信非常有限的定義。


Perl的

$var =~ /\Uabc\Edef/ 

將在下面的Python編寫:

re.search("abc".upper() + "def", var)