我试图编写一个正则表达式(在Google电子表格内)来删除括号,括号内的文本和括号前的空格。换句话说,我试图只提取文本内部的名称。例如,我喜欢字符串" A.J.史密斯(iOS开发商,旧金山)"成为" A.J。史密斯"
到目前为止,我已经获得了=REGEXEXTRACT(D2,"[^()]*")
和=REGEXEXTRACT(D2,"^[^(]+")
来提取" A.J。史密斯"但它留下了最后的空间。这可能是一个非常容易解决的问题,我对正则表达式并不是很好。
答案 0 :(得分:2)
只使用字边界。
=REGEXEXTRACT(D2,"^[^(]+\\b")
^[^(]+
贪婪地匹配第一个(
符号的所有字符,包括(
之前存在的空格。然后它回溯到匹配字符串上的最后一个单词边界,因为正则表达式中存在\b
。
答案 1 :(得分:1)
请改为尝试:
=REGEXREPLACE(D2,"\s\(.*","")
我正在做的是将所有内容从括号旁边的空格替换为字符串末尾,没有任何内容。
答案 2 :(得分:0)
我使用https://regoio.herokuapp.com/帮助构建匹配的正则表达式。这个正则表达式将匹配此示例没有空格。 ^(.+)\s\(
正则表达式的工作方式如下,^
匹配字符串的开头,括号内捕获您想要使用的内部表达式。在这种情况下,.+
匹配任何字符1次或更多次。 \s
匹配空格字符,\(
匹配左括号。
如果你想要一个正则表达式来删除字符串开头的空格以及括号之前的空格,那么这应该有效:^[\s]*(.+)[\s]+\(
使用此正则表达式,您可以在单个REGEXEXTRACT
中提取所需的所有文本,而不是使用多个文本:
=REGEXEXTRACT(D2,"^[\s]*(.+)[\s]+\(")
答案 3 :(得分:0)
我发现=REGEXEXTRACT(D2,"(.*)\s\(")
也对我有用。
答案 4 :(得分:0)