我正在解析一个文本为"$string1:$string2"
我如何正则表达式匹配此字符串并从中提取"string1"
和"string2"
,基本上正则表达式匹配此模式: "$*:$*"
答案 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