我的名字正则表达式在一些条目中被证明是错误的:
find_name = re.search(r'^[^\d]*', clean_content)
上面的代码会在一些条目上输出类似的内容:
TERRI BROWSING APT A # current output
因此,我需要一种方法来进行修剪;它使我的程序的其余部分绊倒了。 我唯一想到的标识符是我是否可以某种方式检测到第二个空格;并删除其后的所有字符。
我只需要名字和姓氏; 即
TERRI BROWSING # desired
删除这些字符后,我可以.strip()
移出尾随空格,只需要一种方法就可以删除第二个空格之后的所有内容。...或者可能只检测到两个单词,仅此而已。
答案 0 :(得分:4)
也许您不需要正则表达式,但可以使用简单的拆分和联接:
text = 'TERRI BROWSING APT A'
' '.join(text.split(' ')[0:2])
# 'TERRI BROWSING'
答案 1 :(得分:1)
您可以这样做:
^\S+\s+\S+
^
匹配字符串的开头
\S+
匹配一个或多个非空格
\s+
匹配一个或多个空格
此外,假设空格实际上是一个空格字符,则可以使用 str.find
找到第二个空格的索引,然后将字符串切成该点:
text[:text.find(' ', text.find(' ') + 1)]
示例:
In [326]: text = 'TERRI BROWSING APT A'
In [327]: re.search(r'^\S+\s+\S+', text).group()
Out[327]: 'TERRI BROWSING'
In [338]: text[:text.find(' ', text.find(' ') + 1)]
Out[338]: 'TERRI BROWSING'
答案 2 :(得分:1)
如果要删除其余部分,可以将非空白字符\S*
匹配2倍,后跟一个空格,然后将其捕获到一个组中。然后将任何char 0+次匹配,并使用re.sub
^(\S* \S* ).*
import re
print(re.sub(r"^(\S* \S* ).*", r"\1", "TERRI BROWSING APT A"))
结果
TERRI浏览