我想在字符串中搜索特定的子字符串,并使用re将这些子字符串存储在列表中,我将如何进行此操作?
到目前为止,这是我的代码:
#!/usr/bin/env python
from sys import stdin
import re as reg
regex = reg.compile(r"\".*\"")#match " match me "
line = stdin.readline().strip().split()
myList = [ match for match in regex.finditer(line) ]
print myList
以下是示例输入:
"RUn.exe O" "" " 2ne, " two! . " "
这个预期的输出,无需添加括号,这只是我澄清所需的具体匹配:
<RUn.exe O>
<>
< 2ne, >
<two!>
<.>
< >
所以基本上,引号之间的任何内容都是输出的一部分,应该写入列表,没有引号的任何内容都应该写入列表
谢谢你们
P.S。我在哪里可以学习在python中使用正则表达式?我很喜欢用grep或awk使用正则表达式,但我仍然是python的新手,我特别喜欢编译正则表达式的想法一遍又一遍地使用,但我不知道在哪里可以了解更多
答案 0 :(得分:0)
我认为这就是你正在寻找的东西,你可能可以在没有for循环的情况下做到......
line = '"RUn.exe O" "" " 2ne, " two! . " "'
import re
regex = re.compile(r'"[^"]*"|[^\s]+')
matches = [el.strip('"') for el in regex.findall(line)]
print '\n'.join(matches)
你可以使用'和'在python中创建一个字符串。当我使用'时,字符串不会在遇到“时结束”,我不必逃避它。如果你正在创建一个包含'或'的字符串,那么使用另一个字符串作为开始/停止是很方便的。
正则表达式的工作原理如下:首先找到一个“。[^”]表示任何不是(^)a的东西,并匹配任意数量的这个(*)。然后找到另一个“。 类似地,[^ \ s]表示不是空格的任何内容,+表示一个或多个。
re的文档可能有线索:http://docs.python.org/2.7/library/re.html#match-objects