正则表达式,在首次连续大写单词后选择所有内容

时间:2013-09-14 13:11:08

标签: regex drupal-7 drupal-feeds

我想在连续几个大写单词之后选择所有内容。即:

Terry Smith is a good school teacher. She works tirelessly.

会成为;

is a good school teacher. She works tirelessly.

到目前为止,这不起作用;

(^[A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+)([\s\S]*)

我在Drupal的feed篡改插件中使用了“find replace regex”功能,以便用“空格”替换“Terry Smith”之后的所有内容。

2 个答案:

答案 0 :(得分:1)

以下表达式匹配句子开头的所有连续大写单词。

^(?:(?:[A-Z][a-z]+)(?>\s*))+

Regex101 Demo

如果你想从setnence中删除那部分,那么你所要做的就是用空字符串替换它。

如果要替换之后的部件,则可以使用以下表达式:

^((?:(?:[A-Z][a-z]+)(?>\s*))+)([\s\S]+)

并使用$1的替换字符串或您的语言中用于引用第一个捕获组的任何内容。

Regex101 Demo

答案 1 :(得分:0)

这将找到大写词:

[A-Z][a-z]+(?=\b)\s*

Regular expression visualization

您可能希望在+之后将*替换为[a-z],以匹配单字符大写字词。

要在字符串的开头获取所有大写单词,请在其周围添加^()+

^([A-Z][a-z]+(?=\b)\s*)+