R 从包含三个以上字母的字符串中提取第一个单词

R 从包含三个以上字母的字符串中提取第一个单词,r,string,R,String,所以我有一个字符串: “我是一家卫生机构的牙医。” 我想提取包含三个以上字母的第一个单词,并将其放入datatable中的一个新列中,即本例中的“牙医”。我想我必须使用strsplit,但我不知道如何继续 谢谢你的帮助 问候,, Antje试试这个简单的解决方案: string<-"I am a dentist in a health organization." words<-unlist(strsplit(string," ")) words[which.max(nchar(wo

所以我有一个字符串:

“我是一家卫生机构的牙医。”

我想提取包含三个以上字母的第一个单词,并将其放入datatable中的一个新列中,即本例中的“牙医”。我想我必须使用strsplit,但我不知道如何继续

谢谢你的帮助

问候,,
Antje

试试这个简单的解决方案:

string<-"I am a dentist in a health organization."
words<-unlist(strsplit(string," "))
words[which.max(nchar(words)>3)]
[1] "dentist"

string试试这个简单的解决方案:

string<-"I am a dentist in a health organization."
words<-unlist(strsplit(string," "))
words[which.max(nchar(words)>3)]
[1] "dentist"

string从一开始匹配最短的字符序列
“^”
“*?”
,然后是一个4个或更多字符的单词,
“\\b(\\w{4,}\\b”
,然后是剩余的文本,
“*”
,并用第一个(也是唯一的)捕获组替换所有字符(即,与带括号的正则表达式部分的匹配)


从一开始,匹配最短的字符序列,
“^”
“*?”
,后跟一个包含4个或更多字符的单词,
“\\b(\\w{4,}\\b”
,后跟剩余的文本,
“*”
,并用第一个(也是唯一的)捕获组替换所有字符序列(即,与带括号的正则表达式部分的匹配)

  • \w{4,}
    匹配任何单词字符(等于[a-zA-Z0-9))
  • {4,}
    量词-匹配次数介于4次和无限次之间,尽可能多地匹配,根据需要返回(贪婪)
  • 非捕获组
    (?:\\w+)
  • 量词-匹配0到1次,尽可能多次,根据需要返回(贪婪)
  • +
    量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪)
  • strng
    
  • \w{4,}
    匹配任何单词字符(等于[a-zA-Z0-9))
  • {4,}
    量词-匹配次数介于4次和无限次之间,尽可能多地匹配,根据需要返回(贪婪)
  • 非捕获组
    (?:\\w+)
  • 量词-匹配0到1次,尽可能多次,根据需要返回(贪婪)
  • +
    量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪)

  • strng欢迎来到StackOverflow!请阅读了解如何提问,并欢迎来到StackOverflow!请阅读了解如何提问,并提供
    
    # input data frame
    DF <- data.frame(x = c("I am a dentist in a health organization.", 
      "I am a dentist in a health organization."))
    
    pat <- "^.*?\\b(\\w{4,})\\b.*"
    transform(DF, longword = sub(pat, "\\1", x))
    
                                             x longword
    1 I am a dentist in a health organization.  dentist
    2 I am a dentist in a health organization.  dentist