我是正则表达式的新手,过去两天我一直在使用在线教程。我想我理解了一些基础知识,但我不知道试图用我的一些数据来实现它。
我有几句话:
您好,欢迎。我的名字是 Amanda ,今天我可以为您提供哪些帮助? 你好,欢迎光临。我的名字是 Daniel L ,今天我可以为您提供哪些帮助? 你好,欢迎光临。我的名字是约翰·利文斯顿,今天我可以为您提供哪些帮助?
您好,我的名字是 Alyssa D ..我该如何帮助?
您好,我的名字是 John 。我该如何帮忙?
你好,欢迎光临。我的名字是 Felicia F 。,我今天如何为您提供帮助?
您好,欢迎。我的名字是 Alex 我今天如何为您提供帮助? 你好,欢迎光临。我的名字是 Alex P 我今天如何为您提供帮助?
我试图检索“#34;我的名字是"。
之后的名字。问题是,有时会有名字,名字带首字母,或名字和姓氏。有时一段时间跟在名字后面,有时候是一个逗号,有时甚至根本没有(除了' how'这可能是标准)。
如何只返回全名?
现在我有:
[Mm] [Yy] \ s * [Nn] [Aa] [Mm] [Ee] \ s * [Ii] [Ss] \ s *(\ w + \ s?\ w *)
但它并没有解决问题
它匹配整个短语,而不仅仅是名称
2.在Alex'的情况下,它返回' Alex How'
任何帮助将不胜感激。我似乎无法取得任何进展!哦,如果有帮助,我会使用R.
答案 0 :(得分:3)
这使用strapplyc中的gsubfn package来提取捕获组(与正则表达式的括号部分匹配的部分)。
# 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)
,并提供:
[1] "Amanda" "Daniel L" "John Livingston" "Alyssa D."
[5] "John" "Felicia F." "Alex" "Alex P"
以下是正则表达式的可视化:
is ([A-Z][a-z]*( [A-Z][a-z]*[.]?)?)