79

文字是:

WYATT    - Ranked # 855 with    0.006   %
XAVIER   - Ranked # 587 with    0.013   %
YONG     - Ranked # 921 with    0.006   %
YOUNG    - Ranked # 807 with    0.007   %

我只想得到

WYATT
XAVIER
YONG
YOUNG

我试过 :

(.*)?[ ]

但它给了我:

WYATT    - Ranked
4

6 回答 6

173

正则表达式对此是不必要的。只需使用some_string.split(' ', 1)[0]or some_string.partition(' ')[0]

于 2012-12-06T18:41:03.647 回答
29

如果你想感觉特别狡猾,你可以这样写:

(firstWord, rest) = yourLine.split(maxsplit=1)

这应该带来两全其美:

我有点爱上了这个解决方案,它具有一般的拆包能力,所以我不得不分享它。

于 2016-10-18T12:58:18.867 回答
14

你应该这样做:

print line.split()[0]
于 2016-01-12T13:52:04.690 回答
10

使用这个正则表达式

^\w+

\w+匹配 1 到多个字符。

\w类似于[a-zA-Z0-9_]

^描述字符串的开头


关于您的正则表达式

你的正则表达式(.*)?[ ]应该是^(.*?)[ ]或者^(.*?)(?=[ ])如果你不想要空间

于 2012-12-06T18:39:17.400 回答
7

不需要regex. string[: string.find(' ')]

于 2012-12-06T18:47:02.237 回答
2

您不需要正则表达式在空格上拆分字符串:

In [1]: text = '''WYATT    - Ranked # 855 with    0.006   %
   ...: XAVIER   - Ranked # 587 with    0.013   %
   ...: YONG     - Ranked # 921 with    0.006   %
   ...: YOUNG    - Ranked # 807 with    0.007   %'''

In [2]: print '\n'.join(line.split()[0] for line in text.split('\n'))
WYATT
XAVIER
YONG
YOUNG
于 2012-12-06T18:42:38.607 回答