从带有正则表达式

时间:2016-12-02 15:41:14

标签: python regex

我需要得到主要的'字符串中的子字符串。我使用python,我认为正则表达式可以帮助我。我需要开始匹配一个单词并在字符串中的稍后点停止匹配,其中字符串中不再有任何单词

所以,例如:

"  , ? -- Mr. Smith . ? " -> "Mr. Smith"

" New ------- York " -> "New ------- York"

这显然比我将要使用的任何东西更丑陋,但是我希望它能得到重点,我需要它匹配第一个单词然后在最后一个单词之后停止匹配字符串,但它需要包含这两个字符之间的每个字符

谢谢,如果有人可以提供帮助!

3 个答案:

答案 0 :(得分:1)

猜猜'\w.*\w'应该有效

>>> re.search(r'\w.*\w', "  , ? -- Mr. Smith . ? ").group(0)
'Mr. Smith'

答案 1 :(得分:1)

您可以尝试以下正则表达式

\w+(?:.*\w)?

TEST IT HERE

它捕获1个或多个单词字符(\w+),然后发现模式.*\w的1或0个出现(结尾有0个或更多字符且带有单词字符)。 (?: ... )语法表示非捕获组。

示例输出:

  , ? -- Mr.. Smith . ? --> Mr.. Smith
" New ------- York "    --> New ------- York
a                       --> a
 ('( a::'---'           --> a
?..-t- !                --> t

答案 2 :(得分:1)

如果没有正则表达式,你可以非常简单地完成:

from string import punctuation

s = "  , ? -- Mr. Smith . ? "
print(s.strip(punctuation + ' ')

输出是:

'Mr. Smith'

对于字符串" New ------- York ",输出为'New ------- York'