多亏了Wiktor Stribiżew的回答及其详细的讨论,我有了一个RegEx (\p{L}+(?:\s+\p{L}+)*),它可以捕获字符(也是Unicode),直到点(.)和分号(;)但是,我只想捕捉一个点,只有在它之前有一个字符(可以是unicode一个),并且在它后面有一些字符。让我举几个例子。RegEx正确地捕获了例如:
WOJCIECH T ZAŁUSKA
WOJCIECH ZAŁUSKA
WOJCIECH Ted ZAŁUSKA但它未能正确地捕捉到:
WOJCIECH T. ZAŁUSKA除了圆点,我什么都能得到(沃希切赫,T,ZA,Ł,USKA),我也想抓住这个点。
所以,我想抓住像上面那样的字符串。我需要更多的例子:
Ted J. Knox
Chris Jay J. Nick在有多个小圆点的字符串中,只应考虑第一个。让我举一个我不喜欢抓住的例子。考虑以下字符串:
WOJCIECH T. ZAŁUSKA. Adam只有WOJCIECH T. ZAŁUSKA才会被抓。我试过(\p{L}+(?:\s+\p{L}+\.)*),但是它捕获了多个点,并且有更多的缺点。
发布于 2016-05-04 13:17:06
如果点只能出现在第二个“单词”之后,请使用
\p{L}+(?:\s+\p{L}\.)?(?:\s+\p{L}+)+该模式将匹配:
\p{L}+ -1或更多字母(?:\s+\p{L}\.)? -1或0序列的1+空格+1字母+a点(?:\s+\p{L}+)+ - 1+序列的1+白空间+1或更多字母https://stackoverflow.com/questions/37027698
复制相似问题