正则表达式 - 检索模式中的特定单词

时间:2013-12-22 17:13:14

标签: python regex

在Python上,假设我有一个字符串,它代表一个字符串模式,如:

myString = "//command -name two -parent one [...]"

其中[...]表示 -arg 的序列。


如何从字符串中提取特定内容? 例如,我想提取单词:

wordsExtracted = ['command', 'name', 'two', 'parent', 'one', ... ]

...的含义...... 你知道什么意思!


我认为检索它的最佳方法是使用 RegEx ,对吧?
另一种方法是使用'//'和' - '进行分割,但我认为这不是一种优雅的方式。

那么......我怎么能做我想做的事?

4 个答案:

答案 0 :(得分:1)

我确定还有其他解决方案,但是如果你想使用正则表达式,这样的模式就可以了

\w+

这将匹配一个或多个“单词”字符的任何序列。 (有关精确定义,请参阅official documentation

例如:

import re
re.findall('\w+', myString)
=> ['command', 'name', 'two', 'parent', 'one']

要处理参数中可能出现的任何其他特殊字符,您可能需要使用以下内容:

[^\s/-]\S*

这将匹配任何不是空白字符,连字符或正斜杠的字符,后跟零个或多个非空白字符。

例如:

myString = "//command -name two -parent one-one foo@example.com"
re.findall('[^\s/-]\S*', myString)
=> ['command', 'name', 'two', 'parent', 'one-one', 'foo@example.com']

答案 1 :(得分:0)

正则表达式是一种可能的解决方案,但我可能会选择以下方法之一:

答案 2 :(得分:0)

import shlex
myString = "//command -name two -parent one [...]"
shlex.split(myString)
['//command', '-name', 'two', '-parent', 'one', '[...]']

答案 3 :(得分:0)

In [11]: myString = "//command -name two -parent one -foo bar"

In [12]: [re.sub(u'^[-/]*', '', x) for x in myString.split()]
Out[12]: ['command', 'name', 'two', 'parent', 'one', 'foo', 'bar']

import re是必需的。