我有一个字符串
"WELLS FARGO DEALER SERVICES May 18 06:11 4137 Reference# 10982"
我想删除所有内容以便
"WELLS FARGO DEALER SERVICES"
如何使用正则表达式执行此操作。我只想要所有的上限词。
答案 0 :(得分:2)
您可以使用空字符串替换/\W*\b\w*[^\WA-Z]\w*/
。
或处理unicode字母:/\W*\b\w*[^\W\p{Lu}]\w*/u
要修剪字符串的结尾,可以在末尾添加|\W+\z
。 (你可以做同样的事情来修剪开头)
答案 1 :(得分:1)
这是@CasimiretHippolyte优秀答案的增强。
(?:\W*\b\w*[^\WA-Z]\w*)+|(?<!\S)[^\S\r\n]+|\W+\z|\A\W+
这将他的答案分组为一个多量化的群体 它增加了他的BOL / EOL装饰。
它还在多个空格上添加了额外的修剪,留下了一个空格 (这是因为大写词组之间有多个空格)。
扩展
(?: \W* \b \w* [^\WA-Z] \w* )+
|
(?<! \S )
[^\S\r\n]+
|
\W+ \z
|
\A \W+
答案 2 :(得分:1)
str = "WELLS FARGO DEALER SERVICES May 18 06:11 4137 Reference# 10982"
如果您只想在全部字词之间留出一个空格,那么它只是
str.split.select { |word| word =~ /\A[A-Z]+\z/ }.join(' ')
#=> "WELLS FARGO DEALER SERVICES"