gpt4 book ai didi

c# - 查找首字母大写且组合在一起的单词

转载 作者:行者123 更新时间:2023-11-30 19:15:45 25 4
gpt4 key购买 nike

我试图在单个字符串或组合在一起的字符串中查找单词。

例如:

This is a String That is my example, Here Is More text as example.

我想取出来,所以我的结果如下。

This
String That
Here Is More

我目前的正则表达式是这个

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

这会找到大写的单词,但只会将它们单独分组并包含空格。如何控制正则表达式连续接受 1 到 3 个大写字母的单词

最佳答案

真正支持Unicode的方案是

\b(?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)*(?:\s+(?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)*){0,2}\b

它将只匹配连续 1-3 个大写单词,没有前导/尾随空格。

参见 regex demo

解释如下:

  • \b - 单词边界(前面应该有一个非单词字符)
  • (?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)* - 以大写字母开头的单词 (后跟可选的变音符号)然后跟任何(预组合的)Unicode 字母
  • (?:\s+(?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)*){0,2} - 出现 2 到 0 次
    • \s+ - 1 个或多个空格 (\s+) 后跟...
    • (?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)* - 由 Unicode 字母组成的单词(可能带有变音符号)。

\p{Lu} 匹配大写 Unicode 字母。 \p{M} 匹配变音符号。因此,要匹配大写的 Unicode 字母,请使用原子组 (?>\p{Lu}\p{M}*)\p{L} 匹配任何基本 Unicode 字母。因此,一个单词将是子模式 (?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)* 的总和。

C# code :

var line = "This is a String That is my example, Here Is More Text as example.";
var pattern = @"\b(?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)*(?:\s+(?>\p{Lu}\p{M}*)(?>\p{L}\p{M}*)*){0,2}\b";
var result = Regex.Matches(line, pattern).Cast<Match>().Select(x => x.Value).ToList();

结果:ThisString ThatHere Is MoreText

关于c# - 查找首字母大写且组合在一起的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33914179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com