【问题标题】:How can I convert these perl regex to python如何将这些 perl 正则表达式转换为 python
【发布时间】:2015-05-14 19:43:53
【问题描述】:

我正在尝试将 perl 脚本转换为 python,但我被正则表达式语句挂断了。

Perl 脚本:

open NICKNAME, $NICKNAMEFILE or die "$NICKNAMEFILE: $!";
<NICKNAME> =~ /.+[.].+[.](.+)/;
my $project = $1;
$struct{'project'} = $project;
close NICKNAME;

open KEYFILE, $KEYHASHFILE or die "$KEYHASHFILE: $!";
<KEY> =~ /^([-\w\d]+)$/;
my $key = $1;
$struct{'key'} = $key;
close KEYFILE;

Python:

nickname = open(NICKNAMEFILE, "r")
project = re.search(#something)
struct['project'] = project
nickname.close()

keyfile = open(KEYHASHFILE, "r")
key = re.search(#something)
struct['key'] = key
keyfile.close()

【问题讨论】:

  • #something = r'.+[.].+[.](.+)'
  • 你能解释一下它的真正含义吗?它是否在字符串中查找任意数量的小数?
  • 我刚刚将正则表达式定义从 Perl 翻译成 Python。
  • /.+[.].+[.](.+)/ 正在寻找“任何字符”(.)至少一次(+),后跟文字 .然后再次相同(至少一个任何字符后跟一个点),然后它查找至少一个任何字符,但将值记录在 $1 中以备后用。第二个是查找任何字母数字字符和“-”,至少一次,并且字符串中没有其他字符。它还将结果存储在 $1
  • 一串字符后跟一个点,然后是一堆字符,然后是另一个点,然后是另一串被捕获的字符。我强烈怀疑该模式实际上需要锚定,并且您可能应该在尝试之前进行更多研究。此外,脚本不会检查匹配是否成功,您的翻译代码也不会检查,这样就会造成破坏和灾难。

标签: python regex perl


【解决方案1】:

Python 和 Perl 的正则表达式语法相同。你的问题更多的是“这个正则表达式搜索什么。”

参考Python正则表达式库,我可以推导出如下(https://docs.python.org/2/library/re.html):

r'.+[.].+[.](.+)'

正在搜索某种形式的东西

(one or more character).(one or more character).(one or more character)

还有这个:

r'^([-\w\d]+)$'

正在寻找某种形式的东西

a string starting with any number of letters A-Z/a-z or number 0-9 and no special characters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多