我正在尝试将一些perl代码转换为python。我遇到过这一行
if($Var=~ /^\U/)
{ dosomething(); }
我看过网络表达,但我无法理解其含义。
\ U大写直到\ E
\ E结束案例修改
如果可能的话,请举例说明正确的用法以及如何使用等效的python。
答案 0 :(得分:7)
正则表达式引擎对\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)