首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不确定如何在匹配后返回短语,并包含条件子句。

不确定如何在匹配后返回短语,并包含条件子句。
EN

Stack Overflow用户
提问于 2015-02-23 22:00:16
回答 1查看 60关注 0票数 0

我对正则表达式很陌生,在过去的两天里,我一直在学习在线教程。我想我理解其中的一些基本知识,但我无法用我拥有的一些数据来实现它。

我有几个短语:

你好,欢迎。我叫,今天我能帮你什么忙吗?

你好,欢迎。我叫Daniel L,今天我能帮你什么忙吗?

你好,欢迎。我叫John Livingston,今天我能帮你什么忙吗?

你好,我是Alyssa D..。我怎么可以帮上你呢?

你好,我叫John。我怎么可以帮上你呢?

你好,欢迎。我叫Felicia F,今天我能帮你什么忙吗?

你好,欢迎。我叫Alex今天我能帮你什么忙吗?

你好,欢迎。我叫亚历克斯P今天我能帮你什么吗?

我试图检索在“我的名字是”的一些变体之后的名字。

问题是,有时有一个名字,名字带有首字母,或者名字和姓。有时句点跟在名字后面,有时是逗号,有时什么都没有(除了单词'how',这可能是标准)。

怎样才能只返回全名呢?

现在我有:

代码语言:javascript
复制
 [Mm][Yy]\s\*[Nn][Aa][Mm][Ee]\s\*[Ii][Ss]\s\*(\w+\s?\w\*)    

但这并不能解决问题

  1. 它符合整个短语,而不仅仅是名字。
  2. 如果是'Alex',则返回'Alex How‘

任何帮助都将不胜感激。我似乎无法在这方面取得任何进展!如果这有帮助的话我在用R。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 22:13:01

这在提取捕获组的gsubfn封装中使用gsubfn封装(与正则表达式括号大小部分匹配的部分)。

代码语言:javascript
复制
# test data
Lines <- "Hello and welcome. My name is Amanda, how may I assist you today?
Hello and welcome. My name is Daniel L, how may I assist you today?
Hello and welcome. My name is John Livingston , how may I assist you today?
Hello, my name is Alyssa D.. How can I help?
Hello, my name is John. How can I help?
Hello and welcome. My name is Felicia F., how may I assist you today?
Hello and welcome. My name is Alex how may I assist you today?
Hello and welcome. My name is Alex P how may I assist you today?"
L <- readLines(textConnection(Lines)) 

library(gsubfn)
strapply(L, "is ([A-Z][a-z]*( [A-Z][a-z]*[.]?)?)", simplify = TRUE)

给予:

代码语言:javascript
复制
[1] "Amanda"          "Daniel L"        "John Livingston" "Alyssa D."      
[5] "John"            "Felicia F."      "Alex"            "Alex P"   

下面是正则表达式的可视化:

代码语言:javascript
复制
is ([A-Z][a-z]*( [A-Z][a-z]*[.]?)?)

Debuggex Demo

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28684318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档