感谢answer by 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
除了点(WOJCIECHTZAŁUSKA),我得到了所有东西,我也想抓住这个点。
所以,我想抓住像上面那样的字符串。我需要的更多例子:
Ted J. Knox
Chris Jay J. Nick
在有多个dotes的字符串中,只应考虑第一个。让我举一个我不喜欢的例子。请考虑以下字符串:
WOJCIECH T. ZAŁUSKA. Adam
只应抓住WOJCIECH T. ZAŁUSKA
。我尝试了(\p{L}+(?:\s+\p{L}+\.)*)
,但它抓住了不止一个点并且有更多缺点。
答案 0 :(得分:1)
如果点只能在第二个“单词”之后出现,请使用
1 1
- street
ends 2 2
请参阅regex demo
模式将匹配:
\p{L}+(?:\s+\p{L}\.)?(?:\s+\p{L}+)+
- 一个或多个字母\p{L}+
- 1或0个1+空格+ 1个字母+一个点(?:\s+\p{L}\.)?
- 1 + 1个空格+ 1个或更多个字母的序列