Python 传入文件的正则表达式语句

Python 传入文件的正则表达式语句,python,regular-language,Python,Regular Language,我对Python和正则表达式都是新手,但我不得不在实习中使用它们。我正在阅读一个文件,并使用正则表达式从文件中挑出重要的内容 特别是我有一条线路有问题。在该文件中,它如下所示: TOWNHOME_PTS_COST price_per_household_lin_this_x 我想在行中输入第二个字符串,但字母和下划线的混合让我很难编写代码。我试过运行以下程序,但似乎不起作用。此外,我一直在使用.group(1)函数从其他文件中提取内容,但对于此行,它似乎不起作

我对Python和正则表达式都是新手,但我不得不在实习中使用它们。我正在阅读一个文件,并使用正则表达式从文件中挑出重要的内容

特别是我有一条线路有问题。在该文件中,它如下所示:

  TOWNHOME_PTS_COST                price_per_household_lin_this_x
我想在行中输入第二个字符串,但字母和下划线的混合让我很难编写代码。我试过运行以下程序,但似乎不起作用。此外,我一直在使用
.group(1)
函数从其他文件中提取内容,但对于此行,它似乎不起作用,它只返回一个空白;我很确定这两个问题是相关的

重新导入
myString=“TOWNHOME\u PTS\u成本价\u每户\u lin\u此\u x”
mapName=re.match(r“[\s]*TOWNHOME\u PTS\u COST[\s]*([a-z]|||)*”,myString)
如果(地图名称):
打印(“找到了!”)
打印(mapName.group(0))
其他:
打印(“不工作”)
输出:

Found It!
TOWNHOME_PTS_COST                price
我想把整个第二个字符串
price\u per_household\u lin\u this\u x
,我也试着把
([a-z]| | | | | | |)*
加倍,并在该语句中放置更多的
*
,但它们都返回相同的第二个字符串
price
。谢谢你的帮助

代码:

import re

myString ="          TOWNHOME_PTS_COST         price_per_household_lin_this_x"
mapName = re.match(r"[\s]*TOWNHOME_PTS_COST[\s]*([a-z_])+", myString)#Notice the ([a-z_])+ 
if(mapName):
    print("Found It!")
    print(mapName.group(0))
else:
    print("Not working")
输出:

Found It!
          TOWNHOME_PTS_COST         price_per_household_lin_this_x

我希望我正确理解了你的问题。请检查下面的代码。我想你自己也能找到不同之处。除了@LazyCoder的答案之外,请注意使用括号“()”表示捕获组(即可以反向引用的组)。对于正则表达式,这是不必要的,并且“\s”和“a-z_”中的每一个集合可以用方括号括起来。它失败了,因为最后一组中的匹配是[a-z]或“”或“”,并且字符串的“每个家庭的价格”部分中没有空字符(“”)。是否迭代文件中的行并将正则表达式应用于每一行?是否
r“\s+TOWNHOME\u PTS\s+(*)
work?@wwii是的,我正在迭代文件中的行,并将正则表达式应用于每行,这可能不是最好的方法。此外,您发布的解决方案非常有效。感谢您的帮助!注意重复字符:*表示“0或更多实例”,而+表示“1或更多”。这对于这个特定的示例并不重要,但在其他情况下可能很重要。是的,我认为第二列中至少需要一个字符才能存在。这在这个示例中和一般情况下都很重要。值得思考。非常感谢!这是更新的版本,在第二个字符串中包含数字
mapName=re.match(r“[\s]*TOWNHOME\u PTS\u成本[\s]*[\-a-zA-Z0-9+”,myString)