文字是:
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
答案 0 :(得分:123)
正则表达式对此没有必要。只需使用some_string.split(' ', 1)[0]
或some_string.partition(' ')[0]
。
答案 1 :(得分:10)
使用此正则表达式
^\w+
\w+
匹配1到多个字符。
\w
与[a-zA-Z0-9_]
^
描述字符串的开头
关于您的正则表达式
如果您不想要空格,您的正则表达式(.*)?[ ]
应为^(.*?)[ ]
或^(.*?)(?=[ ])
答案 2 :(得分:7)
不需要regex
。
string[: string.find(' ')]
答案 3 :(得分:6)
如果你想要特别狡猾,你可以这样写:
(firstWord, rest) = yourLine.split(maxsplit=1)
这应该是两个世界中最好的:
maxsplit
进行最优调整,同时使用任何空格分割我有点爱上了这个解决方案以及它的一般解包功能,所以我不得不分享它。 :)
答案 4 :(得分:3)
您不需要正则表达式在空格上拆分字符串:
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
答案 5 :(得分:2)
你应该这样做:
print line.split()[0]