我想要一个正则表达式,可以帮助我使用Stata从字符串中提取一个人的名字。
字符串示例如下:
name_adr
JAMES DeNORMANDIETrapelo Rd., Lincoln
JAMES A. KELLY, JR.Stafford St., Oxford
GEORGE WILLIAM SHATTUCKMt. Lebanon St., Pepperell
我要摆脱它们的方法如下:
name
JAMES DeNORMANDIE
JAMES A. KELLY, JR.
GEORGE WILLIAM SHATTUCK
棘手的部分是,其中一些名称没有大写字母。
我的想法是寻找字符串中后面有两个连续大写字母的部分。我使用的简单正则表达式是
[A-Z][A-Z][.*]$
,但即使这样也不起作用。任何想法如何进行?
最佳答案
看一下这个正则表达式:
.+(?=(?:[A-Z]{2})|_)(?:(?:[A-Z])(?:[A-Z]\.)?)?
Regex Demo
输出:
说明:
.+ # Match all characters
(?=[A-Z]{2}|_) # Positive lookahead - assert that matches two capitals or _ (but does not capture)
(?: # Non-capturing group
(?:[A-Z]) # Match one capital letter
(?:[A-Z]\.)? # Optionally match one capital letter followed by dot
)? # Non-capturing group is optional
关于regex - 从末尾开始连续两个大写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58260726/