首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx:允许在一个可能的字母后面加上一个点

RegEx:允许在一个可能的字母后面加上一个点
EN

Stack Overflow用户
提问于 2016-05-04 12:21:52
回答 1查看 416关注 0票数 2

多亏了Wiktor Stribiżew的回答及其详细的讨论,我有了一个RegEx (\p{L}+(?:\s+\p{L}+)*),它可以捕获字符(也是Unicode),直到点(.)和分号(;)但是,我只想捕捉一个点,只有在它之前有一个字符(可以是unicode一个),并且在它后面有一些字符。让我举几个例子。RegEx正确地捕获了例如:

代码语言:javascript
复制
WOJCIECH T ZAŁUSKA
WOJCIECH ZAŁUSKA
WOJCIECH Ted ZAŁUSKA

但它未能正确地捕捉到:

代码语言:javascript
复制
WOJCIECH T. ZAŁUSKA

除了圆点,我什么都能得到(沃希切赫,T,ZA,Ł,USKA),我也想抓住这个点。

所以,我想抓住像上面那样的字符串。我需要更多的例子:

代码语言:javascript
复制
Ted J. Knox
Chris Jay J. Nick

在有多个小圆点的字符串中,只应考虑第一个。让我举一个我不喜欢抓住的例子。考虑以下字符串:

代码语言:javascript
复制
WOJCIECH T. ZAŁUSKA. Adam

只有WOJCIECH T. ZAŁUSKA才会被抓。我试过(\p{L}+(?:\s+\p{L}+\.)*),但是它捕获了多个点,并且有更多的缺点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 13:17:06

如果点只能出现在第二个“单词”之后,请使用

代码语言:javascript
复制
\p{L}+(?:\s+\p{L}\.)?(?:\s+\p{L}+)+

regex演示

该模式将匹配:

  • \p{L}+ -1或更多字母
  • (?:\s+\p{L}\.)? -1或0序列的1+空格+1字母+a点
  • (?:\s+\p{L}+)+ - 1+序列的1+白空间+1或更多字母
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37027698

复制
相关文章

相似问题

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