Python正则表达式匹配模式“ X <string1>:X <string2>”

时间:2018-10-11 06:53:56

标签: python regex

我正在解析一个文本为"$string1:$string2"

的文件

我如何正则表达式匹配此字符串并从中提取"string1""string2",基本上正则表达式匹配此模式: "$*:$*"

1 个答案:

答案 0 :(得分:1)

您几乎以自己的模式出现在那儿,它需要进行三处改动才能按需工作。

首先,正则表达式中的星星不是glob,正如您可能会在shell脚本中期望的那样,它是kleene star。这意味着,它需要一些字符组,并且可以对其应用“零到n次”逻辑。就您而言,the alphanumeric character class \w应该可以工作。如果限制太严格,请改用.,它与除换行符之外的任何字符都匹配。

第二,您需要以易于提取所需结果的方式应用正则表达式。通常的解决方法是使用括号定义groups

最后但并非最不重要的一点是,$符号在正则表达式中是meta-character,因此,如果要按字面意义进行匹配,则需要在其前面写一个反斜杠。

在工作代码中,它看起来像这样:

import re

s = "$string1:$string2"
r = re.compile(r"\$(\w*):\$(\w*)")

match = r.match(s)
print(match.group(1))  # print the first group that was matched
print(match.group(2))  # print the second group that was matched

输出:

string1
string2