我尝试从以${
开头的文件中提取字符串,并使用Python以}
结尾。我使用下面的代码来做到这一点,但我没有得到预期的结果。
我的输入文件如下所示:
Click ${SWIFT_TAB}
Click ${SEARCH_SWIFT_CODE}
我希望得到如下列表:
${SWIFT_TAB}
${SEARCH_SWIFT_CODE}
我目前的代码如下:
def findStringFromFile(file):
import os,re
with open(file) as f:
ans = []
for line in f:
matches = re.findall(r'\b\${\S+}\b', line)
ans.extend(matches)
print (ans)
我期待一个以${
开头并以}
结尾的字符串列表,但我目前得到的只是一个空列表。
答案 0 :(得分:1)
问题是你的正则表达式有问题,并且与你想要提取的字符串不匹配。具体来说,您有两个问题:
{
和}
是正则表达式元字符,就像$
一样,如果你想要按字面意思匹配它们,也需要进行转义。\b
匹配单词边界,即"单词字符"之间的位置。 (一个字母,一个数字或一个下划线)和一个"非单词字符" (其他任何东西)或字符串的开头/结尾。例如,空格与$
之间不匹配。要解决这些问题,请更改您的行:
matches = re.findall(r'\b\${\S+}\b', line)
为:
matches = re.findall(r'\$\{\S+\}', line)
它应该有用。
有关详细信息,请参阅Python regular expressions documentation。