正则表达式:捕获前面没有任何内容的大写单词
Regex: capturing capital word with nothing in front of it
我正在尝试匹配某些给定文本中的所有专有名词。
到目前为止,我得到了 (?<![.?!]\s|^)(?<!\“)[A-Z][a-z]+
,它忽略了以 .?!
和 space 开头的大写单词以及括号内的单词。可见here.
但它不会捕捉句子开头的大写单词。所以给定文本:
Alec, Prince, so Genoa and Lucca are now just family estates of the “What”. He said no. He, being the Prince.
它成功抓住了 Prince、Genoa、Lucca 但没有抓住 Alec。
因此,如果可能的话,我希望得到一些帮助来修改它,以匹配后面没有任何内容的任何大写单词。 (我不确定如何定义任何内容)
您要查找的东西称为“单词边界”,在许多正则表达式语言中表示为 \b
。
尝试\b[A-Z][a-z]*\b
。
您可以将 “
作为第二个替代项放在后视中,而不是 ^
断言字符串的开头。
那你可以省略(?<!\“)
(?<![.?!]\s|“)[A-Z][a-z]+
说明
(?<!
负向后视,如果当前位置不是,则断言直接向左的内容
[.?!]\s
匹配任何 .
?
!
后跟一个空白字符
|
或
“
字面匹配
)
关闭回顾
[A-Z][a-z]+
匹配一个大写字符 A-Z 和 1+ 个字符 a-z
看到一个regex demo.
我正在尝试匹配某些给定文本中的所有专有名词。
到目前为止,我得到了 (?<![.?!]\s|^)(?<!\“)[A-Z][a-z]+
,它忽略了以 .?!
和 space 开头的大写单词以及括号内的单词。可见here.
但它不会捕捉句子开头的大写单词。所以给定文本:
Alec, Prince, so Genoa and Lucca are now just family estates of the “What”. He said no. He, being the Prince.
它成功抓住了 Prince、Genoa、Lucca 但没有抓住 Alec。
因此,如果可能的话,我希望得到一些帮助来修改它,以匹配后面没有任何内容的任何大写单词。 (我不确定如何定义任何内容)
您要查找的东西称为“单词边界”,在许多正则表达式语言中表示为 \b
。
尝试\b[A-Z][a-z]*\b
。
您可以将 “
作为第二个替代项放在后视中,而不是 ^
断言字符串的开头。
那你可以省略(?<!\“)
(?<![.?!]\s|“)[A-Z][a-z]+
说明
(?<!
负向后视,如果当前位置不是,则断言直接向左的内容[.?!]\s
匹配任何.
?
!
后跟一个空白字符|
或“
字面匹配
)
关闭回顾[A-Z][a-z]+
匹配一个大写字符 A-Z 和 1+ 个字符 a-z
看到一个regex demo.