繁体   English   中英

python正则表达式模式匹配

[英]python regex pattern matching

我需要从一个非常大的文件中提取用户名和ID。我使用的是python 2.7。 我需要打印在username =或prId =之后出现的任何内容,并使用引号“”。

输入:

1. username="null null”
2. username="test"
3. username="test name"
4. username="<unknown>"
5. prId="tokenKeyUser"

以下应匹配:

null null
test
test name
<unknown>
tokenKeyUser

目前我正在做以下事情:

re.search(r'username="(.*?)"', line)
re.search(r'prId="(.*?)"', line)

这能够找到除第1 第5行之外的所有模式。

它无法找到:1。“null null”2。“tokenKeyUser”

我在这做错了什么?

您可以使用布尔值来生成一个正则表达式以匹配所有字符。

username="(.*?)["”]|prId="(.*?)"

第1组将匹配用户名,第2组将匹配prId

for line in file:
  for m in re.finditer(r'((?<=username=)|(?<=prId=))"([^"]+)["”]', line):
    print(m.group(0))

null null”
"test"
"test name"
"<unknown>"
"tokenKeyUser"

我想我会为确切的输出要求提供一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM