【发布时间】:2016-05-04 21:17:06
【问题描述】:
感谢answer by Wiktor Stribiżew 及其详细讨论,我有一个正则表达式(\p{L}+(?:\s+\p{L}+)*) 可以捕获字符(也是Unicode),例如一个点 (.) 和一个分号 (;)。但我只想在它之前有一个字符(它可能是 unicode 字符)并且它之后有一些字符时才捕捉一个点。让我给你一些例子。 RegEx 正确捕获例如:
WOJCIECH T ZAŁUSKA
WOJCIECH ZAŁUSKA
WOJCIECH Ted ZAŁUSKA
但无法正确捕捉:
WOJCIECH T. ZAŁUSKA
除了圆点 (WOJCIECH T ZAŁUSKA) 之外,我得到了所有东西,我也想抓住这个圆点。
所以,我想像上面那样捕捉字符串。我需要的更多示例:
Ted J. Knox
Chris Jay J. Nick
在有多个点的字符串中,只应考虑第一个点。让我举一个我不喜欢抓住的例子。考虑以下字符串:
WOJCIECH T. ZAŁUSKA. Adam
只应捕获WOJCIECH T. ZAŁUSKA。我试过(\p{L}+(?:\s+\p{L}+\.)*),但它捕获的点不止一个,缺点也更多。
【问题讨论】:
-
这些字符串是独立的吗?还是在一些标记的文本中?
-
好吧,如果点只能出现在第二个“单词”之后,请使用
\p{L}+(?:\s+\p{L}+\.)?(?:\s+\p{L}+)+。 -
亲爱的@WiktorStribiżew 它们是独立的:一个字符串 = 一个正则表达式。您的 RegEx 一如既往地完美。我无法形容我对您的持续帮助感到多么感激。
-
(\p{L}+(?:\s+\p{L}\.)*)|((\.\s).*$)