RegEx:在一个可能的字母后

时间:2016-05-04 12:21:52

标签: regex unicode

感谢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}+\.)*),但它抓住了不止一个点并且有更多缺点。

1 个答案:

答案 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个或更多个字母的序列